LocalBroadcastManagerを使用することをお勧めします。これは、あなたのアプリケーション内でのみインテントを見ることができるBroadcastReceiverのようなものです。私は私の受信機の登録を解除するために適切な場所を見つけることができません - 私がやっている実際のですが、私はカスタムビュー(onDestroyなどを持っていない活動)の作成時に登録していますので、
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// your code here
}
};
@Override
protected void onPause() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
super.onPause();
}
@Override
protected void onResume() {
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
IntentFilter filter = new IntentFilter();
filter.addAction(MyClass.MY_ACTION);
lbm.registerReceiver(receiver, filter);
super.onResume();
}
。今のところ私はそうしません:/ –
ビュー(またはカスタムビュー)はアクティビティやサービスのようなライフサイクルを持っていないので、いつ破壊されるか隠されているか分かりません。すべてのビューのすべての登録/登録解除アクションを、それらを含むアクティビティから制御する必要があります。 – vggonz
私はこれを答えとして取り上げますが、カスタムビューもこの意味で独立していてもいいと思っていますが、本当に制限しています。誰かが私が聞いてみたいと思っているアイデアがあるなら、ありがとう。 –