【发布时间】: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已经杀死了我的活动(内存不足),如何解决这种情况
【问题讨论】:
标签: android