irpas技术客

android 让应用恢复前台显示_Android监听程序进入后台,或者恢复到前台_weixin_40007541

irpas 2763

1、通过RunningTaskInfo类判断(需要额外权限):

/**

*判断当前应用程序处于前台还是后台

*/

public static boolean isApplicationBroughtToBackground(final Context context) {

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

List tasks = am.getRunningTasks(1);

if (!tasks.isEmpty()) {

ComponentName topActivity = tasks.get(0).topActivity;

if (!topActivity.getPackageName().equals(context.getPackageName())) {

return true;

}

}

return false;

}

需要在AndroidMenitfest.xml文件中添加以下权限

2.基本思路:让app中所有的activity继承与一个公共的activity(例如:BaseActivity),然后在BaseActivity的onStop()中判断当前程序是否处于后台

/**

* 文件名:BaseActivity.Java

* 版本号:

* 日期:2012-6-20

* 创建人:

* Copyright wadata 版权所有

* 变更:

*/

package com.wadata.mobilefollowup.view.base;

import java.util.List;

import android.app.Activity;

import android.app.ActivityManager;

import android.app.ActivityManager.RunningAppProcessInfo;

import android.content.Context;

/**

* 名称:BaseActivity

* 描述:

* 创建人:

* 日期:2012-6-20 下午5:53:35

* 变更:

*/

public class BaseActivity extends Activity {

@Override

protected void onStop() {

// TODO Auto-generated method stub

super.onStop();

if (!isAppOnForeground()) {

//app 进入后台

//全局变量isActive = false 记录当前已经进入后台

}

}

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

//if (!isActive) {

//app 从后台唤醒,进入前台

//isActive = true;

//}

}

/**

* 程序是否在前台运行

*

* @return

*/

public boolean isAppOnForeground() {

// Returns a list of application processes that are running on the

// device

ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);

String packageName = getApplicationContext().getPackageName();

List appProcesses = activityManager

.getRunningAppProcesses();

if (appProcesses == null)

return false;

for (RunningAppProcessInfo appProcess : appProcesses) {

// The name of the process that this object is associated with.

if (appProcess.processName.equals(packageName)

&& appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {

return true;

}

}

return false;

}

}


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #runningtaskinfo #应用 #激活 # #前台 #static