android系统中,当碧瞎应用安装完成以后会发出一个广播action的值为android.intent.action.PACKAGE_ADDED。只要监听这个广播就可以了。
监听方法悉慧核,创建一个BroadcastReceiver,注册睁掘时添加过滤器,过滤器中添加以上action。
完成以上步骤,当应用安装完成后,你的应用就会收到广播。
一、通过ActivityManager.RunningAppProcessInfo判断
首先,我们需要写一个BaseActivity,然后让我们应用程序的Activity都继承自BaseActivity,这样就可以统一管理,然后在BaseActivity的onResume()和onStop()方法中进行判断应用程序是否进入到后台并且是否从后台返回到了前台,直接看代码:
public class BaseActivity extends Activity {public static boolean isActive //全局变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_base)
}
@Override
protected void onResume() {
if (!isActive) {
//app 从后台唤醒,进入前台
isActive = true
Log.i("ACTIVITY", "程序从后台唤醒")
}
super.onResume()
}
@Override
protected void onStart() {
super.onStart()
}
@Override
protected void onPause() {
super.onPause()
}
@Override
protected void onStop() {
if (!isAppOnForeground()) {
//app 进入后台
纳雀芦 isActive = false//记录当前已经进入后台
Log.i("ACTIVITY", "程序进入后台")
}
super.onStop()
}
@Override
protected void onDestroy() {
super.onDestroy()
}
/**
* APP是否处于前台唤醒状态
*
* @return
*/
public boolean isAppOnForeground() {
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE)
String packageName = getApplicationContext().getPackageName()
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager
.getRunningAppProcesses()
if (appProcesses == null)
return false
岁物 for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
// The name of the process that this object is associated with.
洞带 if (appProcess.processName.equals(packageName)
&& appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return true
}
}
return false
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)