アプリ起動中に特定のActivityでのみ処理を変更したいなどの場合に使えるtipsです。
対象のActivityでNAME
を定義
MyActivity.java
public class MyActivity extends AppCompatActivity {
public static final String NAME = MyActivity.class.getName();
…
}
Application.ActivityLifecycleCallbacks
の実装クラスを作成
MyLifecycleListener.java
public class MyLifecycleListener implements Application.ActivityLifecycleCallbacks {
private static String currentActivityName = "";
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
//今回は表示されている画面を対象としたのでResumeで取得
currentActivityName = activity.getClass().getName();
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
public static String getCurrentActivityName() {
return currentActivityName;
}
}
Application
クラスで登録
MyApplication.java
public class MyApplication extends Application {
@Override
public void onCreate() {
registerActivityLifecycleCallbacks(new MyLifecycleListener());
}
}
以上で設定は終了です。
あとは任意の場所で処理を行えます。
if (MyLifecycleListener.getCurrentActivityName().equals(MyActivity.NAME)) {
//do something.
}