如果任务异步运行,如何从服务中获取结果?
如果在主线程中同步启动一个任务,则没有问题:
Object result = serviceInstanceInActivity.callMethod();
但是如果任务在其他线程中运行,我们就会遇到问题:
void asyncMethodInService() {
new MyTask().execute();
}
class MyTask extends AsyncTask<Void, Void, Result> {
// implementation of the others methods
public void onPostExecute(Result result) {
// We need to send data to Activity here
}
}
当然,它是通过 ServiceConnection 工作的。在平时的课堂中,我会使用接口作为回调,但如果我在这里做同样的事情,Activity 实例将通过回调在 Service 中泄漏。
那么,在这种情况下,推荐的数据传输方式是什么?