2017-01-20 2 views
0

Androidの場合、
アクティビティonDestroy()の方法を聞く/購読するにはどうすればよいですか?私は、複数のアクティビティを通してアクセスして作成することができる共有オブジェクト/クラス/サービスを持っていますが、呼び出し元アクティビティがいつ破棄されるかを知る必要があります。Android:アクティビティを聞くonDestroy()

発信者アクティビティコードを変更することはできませんが、私のクラスを呼び出す特定のアクティビティへの参照があります。

SomeActivity - >オブジェクトを作成します
オブジェクトは、そのアクティビティがいつ終了するかを知る必要があります。

+0

アプリケーションクラスのドキュメントをチェックしてください...私はそれには適切なメソッドが含まれていると確信しています... – Selvin

+0

あなたはありません。あなたはあなたの活動のonDestroyからそのオブジェクトを呼び出すことができますが、それはすべてです。私はあなたがなぜこれを必要としているのか疑問に思っています。なぜあなたはそれを作成したコンテキストについて知る必要がありますか? –

+0

事は、(異なるタイプの)複数のアクティビティがこのオブジェクト/サービスを作成/呼び出すことができるということです。私は活動の文脈だけを知っていて、他には何も知らない。私は自分のプロジェクトでこれらのアクティビティをすべて変更することはできませんが、オブジェクトはアクティビティがいつ終了するかを知る必要があり、クリーンアップ作業を行うことができます。だから、アクティビティへの参照があるので、Activity.onDestroy()メソッドへのリスナーとフックアップを作成できるかどうかは疑問でした。 – emcv

答えて

0

私はあなたのアクティビティを使用して作成したオブジェクトで何かをしようとしていると仮定しますが、あなたのアクティビティが閉じられていれば何とかしています。 getActivity()にアクセスしようとすると、オブジェクトがクラッシュします。

アクティビティクラスの名前someActivityとオブジェクトがフラグメントであるとします。フラグメントはgetActivityを使用できるようにします。作成したオブジェクトがフラグメントでない場合は、おそらくアクセスする方法を見つける必要があります。

someActivity activity = (someActivity) getActivity(); 
     if (activity != null && !activity.isFinishing()) { 
       //do your action here to prevent the app crashes. 
     } 
+0

助けてくれてありがとうございますが、これは私が探しているものではありません。より簡潔な例は、オブジェクト/サービスにサインアップ/サブスクライブするアクティビティです。私はこの活動のコードを何も支配していません。 サービス/オブジェクトは、アクティビティが破棄されたときに、そのアクティビティがいつサブスクリプションを解除できるかを知る必要があります。だから私はそれを購読するすべての活動のためのonDestroy()のための何らかのリスナーが必要です。 – emcv

関連する問題