Android - 后台活动将自己置于前台

Gia*_*yễn 2 android background task android-activity

我有以下情况:

  1. 活动 A 开始活动 B
  2. 用户按下主页按钮并启动另一个应用程序
  3. 一段时间后,我希望活动 B 将自己(而不是创建新实例)置于前台

我怎样才能做到这一点?

我尝试将意图与 FLAG_ACTIVITY_REORDER_TO_FRONT、FLAG_FROM_BACKGROUND 一起使用,并将 B 的启动模式设置为 singleTask、singleInstance 但它们都不起作用。

小智 5

只需根据您的情况在您的活动中使用此方法。它会起作用。

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()
                           + "\t\t 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);

               }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您还需要在清单中添加以下权限。

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />
Run Code Online (Sandbox Code Playgroud)