最近有朋友问我 一些 关于 android 应用 退出了界面或应用 后 ,又要回到应用或者某个界面或者退出后且有在锁屏状态 又要重新唤醒(讲分 第一篇,第二篇 分享给大家) :

在这里分享想我的做法,先讲第一篇,模仿 home键功能

首先,先讲下 Android home键和back键区别

back键
Android的程序无需刻意 的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此 Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用 也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了.

              
home键
Android程序的隐藏,当你按下手机的Home键 的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系 统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity.

       

第二,先讲下 Android home键和back键区别

       

实现按Home键时隐藏程序的效果:
1:Android 2.0之前需要监听按键事件,进行判断是不是按下了back键
2:Android 2.0之后系统提供了一个onBackPressed()方法,这个方法就是专门用来监听back键事件的,所以只需重写onBackPressed()方法即可

@Override public   void   onBackPressed() {      //实现Home键效果      //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了      Intent i=  new   Intent(Intent.ACTION_MAIN);      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      i.addCategory(Intent.CATEGORY_HOME);      startActivity(i);  }

          

退出应用程序的实现:可以自己写个方法,例如:

public   void   exitProgrames(){      Intent startMain =  new   Intent(Intent.ACTION_MAIN);      startMain.addCategory(Intent.CATEGORY_HOME);      startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      startActivity(startMain);      android.os.Process.killProcess(android.os.Process.myPid());  }
注意:需要添加权限:


再次,我一般这样用:


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
 if (keyCode == KeyEvent.KEYCODE_BACK) { 
 

exitProgrames();


return super.onKeyDown(keyCode, event);
}


public void exitProgrames(){ 
    Intent startMain = new Intent(Intent.ACTION_MAIN); 
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
    startMain.addCategory(Intent.CATEGORY_HOME); 
    startActivity(startMain); 
//     android.os.Process.killProcess(android.os.Process.myPid()); 
}
或者
@Override
public void onBackPressed() { 
    //实现Home键效果 
    //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了 
    Intent i= new Intent(Intent.ACTION_MAIN); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    i.addCategory(Intent.CATEGORY_HOME); 
    startActivity(i);  
}
可以实现
注意:需要添加权限:
 

更多相关文章

  1. Android之所以不需要关闭后台运行程序 的 理由
  2. Android热修复(一):底层替换、类加载原理总结 及 DexClassLoader类
  3. 浅析RxJava 1.x&2.x版本区别及原理(三):1.x 版本 Scheduler调度线程
  4. Android(安卓)进阶之了解源码——Activity启动
  5. Sony Reader PRS - T1 被駭顯露更多 Android的特性,可運行其它電
  6. Android中AsyncTask的简单用法及实现网络图片下载的实例
  7. 搭建Android应用程序的服务器
  8. 查看Android(安卓)API文档的正确方式
  9. Android手势源码浅析-----手势绘制(GestureOverlayView)

随机推荐

  1. 是时候丢掉 onActivityResult 了 !
  2. 为什么说for...of是JS中的一颗宝石
  3. 很多人不知道的Python 炫技操作:合并字典
  4. 一文带你入门Java Stream流,太强了
  5. 中心化交易所和去中心化交易所优势分别在
  6. 一文让你彻底掌握 TS 枚举
  7. 我去,你写的 switch 语句也太老土了吧
  8. 从 SQL 到 MongoDB,这一篇就够了
  9. 冬天的作为:企业如何逆境增长
  10. java获取文件路径