2017-02-04 320 views
0

我定期將活動帶到前臺。代碼如下Android:如何在ActivityManager.getRunningTasks中找不到活動時向前移動

public void moveToFront() { 
     runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
      final List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); 
      Log.e(TAG,"moveToFront ..recentTasks.size = "+recentTasks.size()); 
      for (int i = 0; i < recentTasks.size(); i++) 
      { 
       Log.e(TAG, "Application executed : " 
         +recentTasks.get(i).baseActivity.toShortString() 
         + "\t\t ID: "+recentTasks.get(i).id+""); 
       // bring to front 
       if (recentTasks.get(i).baseActivity.toShortString().indexOf("MainActivity") > -1) { 
        Log.e(TAG, "Moving to front"); 
        activityManager.moveTaskToFront(recentTasks.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME); 
        return; 
       } 
      } 
     } 
    }); 

有幾種方案,其中「activityManager.getRunningTasks」方法不返回TASKINFO我的活動(此方法也是不建議使用),因此我的代碼不會推動活動的前景。

1)我回顧ActivityManager.getRunningTasks is deprecated android但我不知道如何將它嵌入到我上面的代碼(或如何其字段映射到參數of'activitymanager.moveTaskToFront,這樣我可以把我的活動前景)

2)另外,如果上述代碼是從外部活動(稱爲服務)調用並且Android已經殺死我的活動(針對低內存),如何解決這種情況

回答

0

設置android:launchMode="singleTop"您需要將活動帶到前臺AndroidManifest.xml文件。 singleTop意味着,在任何時候只會有一個活動實例在運行。所以,當你的活動處於背景或被殺時,它會被帶到前面,如果它在前景中,它將被保留。

moveToFront()方法只是Intent打開活動作爲

Intent intent = new Intent(context, activity.class) 
startActivity(intent) 
相關問題