2013-11-30 8 views
2

У меня следующая ситуация:Android - Фоновая активность решилось на передний план

  1. активность А начинает действие Б
  2. Пользователь нажимает кнопку Home & запускает другое приложение
  3. Через некоторое время, я хочу деятельность B (не создавать новый экземпляр) на передний план

Как это сделать?

Я попытался использовать намерения с FLAG_ACTIVITY_REORDER_TO_FRONT, FLAG_FROM_BACKGROUND и установить режим запуска B как singleTask, singleInstance, но никто из них не работает.

ответ

2

Просто используйте этот метод в своей деятельности в соответствии с вашей ситуацией. это будет работать.

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); 

       } 
     } 
    } 
} 

Также необходимо добавить разрешение ниже в манифесте.

<uses-permission android:name="android.permission.GET_TASKS" /> 
<uses-permission android:name="android.permission.REORDER_TASKS" /> 
Смежные вопросы