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

Posted

技术标签:

【中文标题】Android:如何在 ActivityManager.getRunningTasks 中找不到活动时将其移动到前面【英文标题】:Android: How to move activity to front when it is not found in ActivityManager.getRunningTasks 【发布时间】:2017-02-04 02:59:30 【问题描述】:

我会定期将活动置于前台。代码如下

    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”方法不返回我的活动的任务信息(此方法也已弃用),因此我的代码不会将活动推送到前台。

1) 我查看了ActivityManager.getRunningTasks is deprecated android,但我不明白如何将其嵌入到我的上述代码中(或者如何将其字段映射到'activitymanager.moveTaskToFront 的参数,以便我可以将我的活动推送到前台)

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

【问题讨论】:

【参考方案1】:

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

moveToFront() 方法中,只需使用Intent 作为打开活动

Intent intent = new Intent(context, activity.class)
startActivity(intent)

【讨论】:

以上是关于Android:如何在 ActivityManager.getRunningTasks 中找不到活动时将其移动到前面的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中创建链接按钮

Android:如何在 android studio 中配置 FFMPEG 最新版本?

如何在 Android 上将 TextView 居中?

Android:如何在 android 4.2 上折叠状态栏? [复制]

如何在android中使用WCF服务?

如何在Android的tableview中左对齐文本