美文网首页
Android 按下Home键

Android 按下Home键

作者: 易瑞 | 来源:发表于2017-08-13 18:28 被阅读0次

    很多时候需要监听到手机home键按下,然后再当app打开的时候,这个时候需要触发一些事件,但是怎么去判断手机是home键按下后的结果呢?首先从Activity的生命周期来看,按下home键会走OnStop()这个生命周期方法,当然当唤醒的时候会走onResume()方法,但是在应用程序中有多个activity,如果在baseActiviyt里面来判断,那就肯定是不行的。那么就要运用到下面的方法了。

    方法一:写一个广播接受者,在安卓里面触发一些系统的事件肯定会有广播的。

    classHomeKeyEventBroadCastReceiverextendsBroadcastReceiver {

    staticfinalString SYSTEM_REASON ="reason";

    staticfinalString SYSTEM_HOME_KEY ="homekey";//home key

    @Override

    publicvoidonReceive(Context context, Intent intent) {

    String action = intent.getAction();

    if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {

    String reason = intent.getStringExtra(SYSTEM_REASON);

    if(reason !=null) {

    if(reason.equals(SYSTEM_HOME_KEY)) {

    // home key处理点

    这里就是按下了home键做个flag标记

    }

    }

    }

    }

    }

    记得要去regist这个广播哦,然后在base的OnResume()方法里面去判断那个标记,如果是按下了home键就去处理想要的事件。

    方法二:

    publicclassSystemUtils {

    publicstaticbooleanisActive=false;

    publicstaticbooleanisForeGround(Context context){

    booleanisTopStack=false;

    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())){

    isTopStack=true;

    }

    }

    PowerManager pm= (PowerManager) context.getSystemService(Context.POWER_SERVICE);

    booleanisScreenOn=pm.isScreenOn();

    returnisTopStack&&isScreenOn;

    }

    }

    在BaseActivity的onstop()方法

    @Override

    protectedvoidonStop() {

    super.onStop();

    if(!SystemUtils.isForeGround(this)){

    SystemUtils.isActive=false;

    }

    }

    @Override

    protectedvoidonResume() {

    super.onResume();

    if(!SystemUtils.isActive&&!issplashOne){

    SystemUtils.isActive=true;

    //同样处理想要的事件

    }

    }

    csdn项目地址:http://blog.csdn.net/greatdaocaoren/article/details/75009580

    相关文章

      网友评论

          本文标题: Android 按下Home键

          本文链接:https://www.haomeiwen.com/subject/zouerxtx.html