同步方法是否在与UI线程(Android)不同的线程上运行?

fah*_*hmy 0 java android synchronized android-asynctask

在这里第一次发布问题.刚开始编程和编码我的第一个应用程序

我有一个Application类文件,其方法为fetchUpdates():

public synchronized void fetchUpdates() {
    String[] mURLs = getURLs();
    new DownloadJSONData().execute(mURLs[0], mURLs[1]);
}
Run Code Online (Sandbox Code Playgroud)

DownloadJSONData是asyncTask从服务器获取更新,该onPostExecute方法使用服务器中的JSON数组更新sqlite数据库.

应用程序的不同组件(小部件和活动)调用此方法以从服务器获取更新以更新数据库.

问题:synchronized方法是否在与UI线程不同的线程上运行?如果是这样,DownloadJSONData将同步fetchUpdates()方法中的代码移动到右边应该没有问题吗?如果在连接服务器或从服务器下载数据时存在滞留,它不应该阻止UI线程吗?

动机:我正在尝试更改fetchUpdates()方法以返回指示数据库是否已更新的布尔值.然而,因为它现在是(我认为)fetchUpdates()方法之前完成asyncTaskonPostExecute方法,因此,fetchUpdates()方法不能指明呼叫是否DownloadJSONData()更新数据库.fetchUpdates()如果在调用后更新数据库,我需要调用方法的应用程序组件以不同的方式运行.

PS因为我刚接触编程简单而详细的解释会非常有用.

谢谢!

dre*_*ore 6

不,同步方法在同一个线程中运行.但是,在执行时,没有其他线程可以执行另一个同步方法(同一对象).