私のアプリは、多くのアクティビティとBraodcastReceiver
. アプリがブロードキャスト インテントを受信したときにフォアグラウンドにあるアクティビティを再開したいのですが、どのように実装できますか?
質問する
941 次
2 に答える
2
Intent.FLAG_ACTIVITY_REORDER_TO_FRONTを使用してアクティビティを起動し、既に実行されている場合はタスクの履歴スタックの前に移動し、そうでない場合は新しいものとして開始します。アクティビティが実行されているか、ActivityManager を使用していないかを確認する
@Override
public void onReceive(Context context, Intent intent) {
//start activity
if(isRunning(context)){
Intent i = new Intent(context,Your_Activity_Name.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
context.startActivity(i);
}
else{
// Activity not available in activity stack
}
}
public boolean isRunning(Context ctx) {
ActivityManager activityManager = (ActivityManager)
ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks =
activityManager.getRunningTasks(Integer.MAX_VALUE);
for (RunningTaskInfo task : tasks) {
if (ctx.getPackageName().equalsIgnoreCase(
task.baseActivity.getPackageName()))
return true;
}
return false;
}
また、画面に表示されなくなったアクティビティ スタックにアクティビティを格納するようにandroid:noHistory を設定します。AndroidManifest.xml
<activity
android:noHistory="false"
android:name=".Your_Activity" />
于 2012-12-17T07:25:07.343 に答える
0
アクティビティsingleTop
を作成し、インテントを送信するだけです。
于 2012-12-17T07:21:41.157 に答える