Android:如果在ActivityManager.getRunningTasks中找不到活动,如何将活动移到前面

时间:2017-02-04 02:59:31

标签: android

我会定期将活动带到前台。代码如下

    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&#39;方法不返回我的活动的taskinfo(这个方法也被弃用),因此我的代码不会将活动推送到前台。

1)我回顾了ActivityManager.getRunningTasks is deprecated android,但我无法理解如何将其嵌入上面的代码中(或者如何将其字段映射到&activity.ager.moveTaskToFront的参数,以便我可以将我的活动推向前台)

2)另外,如果从外部活动(比如服务)调用上面的代码并且Android已经杀死了我的活动(低内存),如何解决这种情况

1 个答案:

答案 0 :(得分:0)

android:launchMode="singleTop"文件中需要带到前台的活动设置AndroidManifest.xmlsingleTop表示,任何时候都只会运行一个活动实例。因此,当您的活动处于背景或被杀死时,它将被带到前面,如果它在前景中,它将被保留在前面。

moveToFront()方法中,只需将Intent作为

打开活动
Intent intent = new Intent(context, activity.class)
startActivity(intent)