第一次在这里发问题。刚开始编程和编写我的第一个应用程序。
我有一个具有 fetchUpdates() 方法的应用程序类文件:
public synchronized void fetchUpdates() {
String[] mURLs = getURLs();
new DownloadJSONData().execute(mURLs[0], mURLs[1]);
}
DownloadJSONData 是一个asyncTask
从服务器获取更新的方法,该onPostExecute
方法使用来自服务器的 JSON 数组更新 sqlite 数据库。
应用程序的不同组件(小部件和活动)调用此方法从服务器获取更新以更新数据库。
问题:同步方法是否在与 UI 线程不同的线程上运行?DownloadJSONData
如果是这样,将代码中的代码移动到同步方法应该没有问题fetchUpdates()
吧?如果在连接服务器或从服务器下载数据时出现阻塞,它不应该阻塞 UI 线程,对吧?
动机:我正在尝试更改fetchUpdates()
方法以返回一个布尔值,指示数据库是否已更新。但是,现在(我认为)方法在'fetchUpdates()
方法之前完成,因此,方法无法指示调用是否更新了数据库。如果数据库在调用后更新,我需要调用该方法的应用程序组件表现不同。asyncTask
onPostExecute
fetchUpdates()
DownloadJSONData()
fetchUpdates()
PS因为我是编程新手,所以简单而详细的解释会很有帮助。
谢谢!