私はAsyncTask決して死ぬことのないものを持っています。このイベントのリスナーAsyncTaskは変化し続けます(ユーザーに表示されるアクティビティ/フラグメントによって異なります)。これを達成するために、私は次のような設定をしています:
- インターフェース:
public interface TaskListener { public void onItemChanged(String itemName) }
TaskListenerパブリックメソッドを使用して登録/登録解除されるメンバー変数を含むAsyncTask 。
public void registerListener(TaskListener listener) { mListener = listener; } public void unregisterListener() { mListener = null; }
- の
onPublishProgress()メソッド(メソッドでviaと呼ばれるpublishProgress())doInBackground()でAsyncTask、リスナーに通知します。
さて、私の質問は、リスナーに通知している間、この状況に対する警告はありますか?特に、スレッドセーフかどうか知りたいです。つまり、publishProgress()とregisterListener()が同時に呼び出された場合、適切なリスナーはコールバックを受け取りますか?