質問

活動のイベントに登録する方法はありますか?私はonstart / onstopイベントに特に興味があります。そのためにアクティビティに特別な操作を追加したくはありません。

役に立ちましたか?

解決

他の活動のライフサイクルからイベントを取得する1つの方法は、興味のあるApplication.ActivityLifecycleCallbacksのメインのApplicationインスタンスを使用して、CressaceTagCodeを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));
    }
}
.

それからスパイコードは次のように見えます:

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と上記の ... でのみ機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top