2012-03-14 4 views
1

私はロットオフのアクティビティを持つアプリを持っており、ユーザーはアクティビティの間を歩くことができます。何らかのアクティビティがスタック上にあるかどうかを調べる(単にfinish()を呼び出す)か、スタックにないかどうかを調べるには?いくつかのアクティビティがスタック上にあるかどうかを調べる方法(単にfinish()を呼び出す)か、スタックにないかどうかを調べるにはどうすればいいですか?

+0

あなたはそれを閉じる活動を見つけたいと思う理由について、より良い例を挙げることができますか?私はあなたが行きたいと思う理由を考えることはできませんし、スタック上のどこかにあるアクティビティを閉じることができます。 – BoredAndroidDeveloper

答えて

0

あなたが探しているものについてもう少し明確にする必要があります。

このクラスを使用すると、実行中のプロセスの状態を知ることができます。またSingleInstace (応用 - >アクティビティ - >起動モード - > SingleInstance)としてあなたのAndroidManifest.xmlの活動に加えること http://developer.android.com/reference/android/app/ActivityManager.html

。 アクティビティが実行されている場合は、新しいアクティビティを作成しません。

これを使用すると、アプリでAの前に呼び出されたすべてのアクティビティをクリアするのに役立ちます。

Intent intent = new Intent(this, A.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

あなたは、このようなアクティブなタスク(および各タスクに参加するコンポーネント)のリストを取得できます。

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
List<RunningTaskInfo> tasks = am.getRunningTasks(1); 
if (!tasks.isEmpty()) { 
    ComponentName topActivity = tasks.get(0).topActivity; 
    ... 
} 

をしかし、これはAndroidManifestでandroid.permission.GET_TASKS許可を求めるする必要があります。

関連する問題