-
11-12-2019 - |
質問
活動のイベントに登録する方法はありますか?私は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と上記の ... でのみ機能します。
所属していません StackOverflow