アクティビティのイベントに登録する方法はありますか?私は特にonStart/onStopイベントに興味があり、そのためのアクティビティに特別な操作を追加したくありません。
質問する
994 次
1 に答える
4
他のアクティビティのライフサイクルからイベントを取得する 1 つの方法は、クラスを としてApplication.ActivityLifecycleCallbacks
メイン インスタンスに登録し、関心Application
のある のイベントをフィルター処理することです。Activity
これは短い例です (別のメソッド/クラスからのコールバックを登録したい場合がMainActivity.onCreate
あります。そうしないと、そのメッセージを見逃すことになります;) そして、望ましくない依存関係がそこにある可能性があります)
スパイしたいアクティビティで:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Register a spy for this activity
getApplication().registerActivityLifecycleCallbacks(new ActivitySpy(this));
}
}
次に、Spy コードは次のようになります。
public class ActivitySpy implements ActivityLifecycleCallbacks {
private final Activity mActivity;
public ActivitySpy(Activity activity) {
mActivity = activity;
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
if (mActivity == activity)
Log.i("SPY", "Activity Created");
}
@Override
public void onActivityDestroyed(Activity activity) {
if (mActivity == activity)
Log.i("SPY", "Activity Destroyed");
}
// (...) Other overrides
}
フォローしたいアクティビティへの参照がある場合は、別の場所からスパイを登録することもできます。
これが役立つことを願っています:)
編集:言い忘れましたが、これはAPI レベル 14 以上でのみ機能します...
于 2012-09-29T13:18:28.257 に答える