监听android程序进入后台,和恢复到前台

本文详细解析了Android应用中BaseActivity类的onStop()和onResume()方法的作用,以及如何通过ActivityManager判断应用程序是否处于前台状态。重点讨论了在应用程序进入后台和从后台唤醒时的处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

* 文件名:BaseActivity.java   
 * 版本号:        
 * 日期:2012-11-11 
 */

 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 
 * 描述: 
 * 创建人: tr
 * 日期: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<RunningAppProcessInfo> 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;
         }
 }


转载于:https://my.oschina.net/netmouse/blog/186164

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值