0

私のアプリでは、どのアクティビティがユーザーに表示されるかを知る必要がある場合がいくつかあります。

  • 現在のアクティビティをユーザーに表示する機能はありますか?

今私がやっていることは、次のような静的変数を持つクラスを作成することです

boolean static mainActivityIsVisible = false;

onResume() と onPause() 内で true/false を切り替えます。したがって、他のアクティビティはこの変数をチェックして見つけ出すことができます。

Does the same apply to check if an activity is stopped or destroyed ? Or is there a way to check the activities from the stack of the app ?

最後に

How can I find that the last activity's onDestroy() was called. My objective from this is to find out if the app has totally exited and does not have any activities running, nor is minimized. 

質問は次のように言い換えることができます

How can I know my activity is not running."

How can I know my activity is running but not visible to the user ?
4

1 に答える 1

2

これを使用できます:

1) アクティビティが実行中かどうかはどうすればわかりますか?

class MyActivity extends Activity {
     static boolean active = false;

      @Override
      public void onStart() {
         super.onStart();
         active = true;
      } 

      @Override
      public void onStop() {
         super.onStop();
         active = false;
      }
}

2) アクティビティがフォアグラウンドにあるかバックグラウンドにあるかを確認する方法は?

public class MyApplication extends Application {

  public static boolean isActivityVisible() {
    return activityVisible;
  }  

  public static void activityResumed() {
    activityVisible = true;
  }

  public static void activityPaused() {
    activityVisible = false;
  }

  private static boolean activityVisible;
}

アプリケーション クラスを AndroidManifest.xml に登録します。

<application
    android:name="your.app.package.MyApplication"
    android:icon="@drawable/icon"
    android:label="@string/app_name" >

プロジェクト内のすべてのアクティビティに onPause と onResume を追加します (必要に応じて、アクティビティの共通の祖先を作成できますが、アクティビティがすでに MapActivity/ListActivity などから拡張されている場合は、以下を手動で記述する必要があります)。 :

@Override
protected void onResume() {
  super.onResume();
  MyApplication.activityResumed();
}

@Override
protected void onPause() {
  super.onPause();
  MyApplication.activityPaused();
}

finish() メソッドで、 isActivityVisible() を使用して、アクティビティが表示されているかどうかを確認します。そこで、ユーザーがオプションを選択したかどうかを確認することもできます。両方の条件が満たされた場合に続行します。

于 2013-10-24T09:01:20.043 に答える