在我的 Android 应用程序中,我有一个Observable
Data
类,其中包含一个download()
下载和解析一些数据的方法。完成后,它会通知其Observer
s。
此外,我有一个Activity
和一个Service
。使用. 异步Activity
调用download()
方法AsyncTask
。
Service
不断需要侦听更新以进一步处理数据。这不应该发生在 UI 线程中。我创建了这个Service
小类:
public class MyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
new MyWorkerThread().start();
}
private class MyWorkerThread extends Thread implements Observer{
@Override
public void run() {
observeData();
}
private void observeData(){
Data.getInstance().addObserver(this);
}
@Override
public void update(Observable observable, Object data) {
// In what thread does the code placed here run?
}
}
}
现在,我的问题是:当类的download()
方法Data
通知它Observer
的 s 时,该方法将在哪个线程中update()
运行?这会在由AsyncTask
创建的线程中Activity
,这会阻止代码onPostExecute()
在服务完成之前通过该方法吗?如果是这样,我最好每次都创建MyService
一个Observer
并创建一个新的?MyWorkerThread
或者代码会在它自己的线程中运行MyWorkerThread
吗?
我希望它是可以理解的,提前谢谢!