在我的 Android 应用程序中,我有一个Observable Data类,其中包含一个download()下载和解析一些数据的方法。完成后,它会通知其Observers。
此外,我有一个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吗?
我希望它是可以理解的,提前谢谢!