我有以下情况:
- 活动A启动活动B
- 用户按下主页按钮&启动另一个应用程序
- 过一段时间后,我希望活动B将其自身(而不是创建新实例)置于前台
我该怎么做?
我尝试将intents与FLAG_ACTIVITY_REORDER_TO_FRONT、FLAG_FROM_BACKGROUND一起使用,并将B的启动模式设置为singleTask、singleInstance,但都不起作用。
根据您的情况在活动中使用此方法即可。它会起作用的。
protected void moveToFront() {
if (Build.VERSION.SDK_INT >= 11) { // honeycomb
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (int i = 0; i < recentTasks.size(); i++)
{
Log.d("Executed app", "Application executed : "
+recentTasks.get(i).baseActivity.toShortString()
+ "tt ID: "+recentTasks.get(i).id+"");
// bring to front
if (recentTasks.get(i).baseActivity.toShortString().indexOf("Your app pckg name") > -1) {
activityManager.moveTaskToFront(recentTasks.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
}
}
}
}
您还需要在清单中添加以下权限。
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />