我有一个AsyncTask
从不死亡。此AsyncTask
中的事件的监听者不断变化(取决于用户可见哪个活动/片段)。要做到这一点,我有这样的设置如下:Android AsyncTask - 更改监听器
- 接口:
public interface TaskListener { public void onItemChanged(String itemName) }
- 的AsyncTask其中包含已注册/未注册使用公众
TaskListener
成员变量方法。
public void registerListener(TaskListener listener) { mListener = listener; } public void unregisterListener() { mListener = null; }
- 在
onPublishProgress()
方法(通过publishProgress()
在doInBackground()
方法调用)的AsyncTask
,我通知监听器。
现在,我的问题是有没有告知听众这种情况的任何警告?特别是,我想知道它是否是线程安全的。即如果publishProgress()
和registerListener()
被同时调用,那么正确的听众是否会收到回叫?
为什么你告诉它不应该活动之间的生活? – 500865
AsyncTask不是为此而设计的,它用来在一个活动中使用UI线程之外的繁重工作。它具有与活动创建者相关的onExExcute和onPostExecute方法。 服务是非常适合使用您现在使用AsyncTask的方式。 – Dmitry