我有一個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