Android 连续按下返回键完全退出应用
来源:互联网 发布:linux国内软件源 编辑:程序博客网 时间:2024/05/17 04:28
已经很长时间没有写博客了,主要是工作太忙,但是现在觉得很有必要将一些细小的知识点梳理一下,也算是自己对以往的学习的总结,也希望对其他人有所帮助,好了废话少说,来说说今天的主题:两次按下返回键退出应用程序,这个主题里面涉及了两个小知识点:
(1) 连续两次按下返回键 退出应用
(2) 如何正确的退出应用程序
首先实现第一个功能:
思路:第一次按返回键时,将退出标志设置为true,并通过handler发送一个延迟2S的消息,如果两秒内用户没有按下第二次返回,那么在handleMessage中将退出标示设置为false
第二个功能:以前在网上发现了好多退出应用的方法,如下:
android.os.Process.killProcess(android.os.Process.myPid()) 但是经过证实,这个方法并不能完全退出应用,只能销毁当前Acivity
System.exit(0); 终止java虚拟机 也是没有效果的
那我就说说我的思路吧,自定义一个Application,并在其中创建一个List,保存应用中的所有的Activity,当创建一个Activity的时候,将该Activity加入列表,当销毁一个Activity的
时候移除该Activity。
直接看代码吧
public class MyApplication extends Application { private static final String TAG = "MyApplication"; public List<Activity> allActivity=new ArrayList<Activity>(); public void addActivity(Activity activity) { allActivity.add(activity); } public void removeActivity(Activity activity) { allActivity.remove(activity); } public void exitApp() { for(Activity a:allActivity) { a.finish(); } }}
public class MainActivity extends Activity { private Handler handler; private boolean isExitApp=false; private MyApplication myApp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myApp=(MyApplication)this.getApplication(); myApp.addActivity(this); handler=new MyHandler(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK) { if(isExitApp==true) { myApp.exitApp(); }else { isExitApp=true; handler.sendEmptyMessageDelayed(1, 2000); Toast.makeText(this, "再次按下返回键就退出应用程序", 3000).show(); } return true; } return super.onKeyDown(keyCode, event); } public static class MyHandler extends Handler { private WeakReference<MainActivity> parent; public MyHandler(MainActivity activity) { parent=new WeakReference<MainActivity>(activity); } @Override public void handleMessage(Message msg) { parent.get().isExitApp=false; } } @Override protected void onDestroy() { super.onDestroy(); myApp.removeActivity(this); }}
这里还涉及到一个知识点,在Activity中定义一个Handler的时候,最好是定义为static的,不然有可能灰导致内存泄露,好了 先写到这里吧,有什么不懂的欢迎留言....
0 0
- Android 连续按下返回键完全退出应用
- Android中连续按两次返回键退出应用
- 连续按两次返回键 退出应用
- Android下连续双击返回按键退出应用实现
- android中如何实现连续点击返回键退出整个应用 android两次返回退出应用
- 按下两次返回键退出应用
- Android-连续按两次返回键实现应用程序退出
- Android 连续按两次返回键退出程序
- Android 连续点击返回键退出程序
- Android按两次返回键退出应用
- android 按两次返回键退出应用
- Android 按两次返回键退出应用
- Android 按两次返回键退出应用
- android 按返回退出应用
- Android 按两次返回键完全退出程序
- android 返回键完全退出程序
- 【android】连续点击“返回退出”
- 连续按返回键,退出活动
- Linux删除空行的方法
- JAVA相关基础知识
- 用ssh反向连接内网主机
- Vim设置colorscheme小技巧
- 作为一个技术能力优秀的工程师,我们的能力如何发挥最大效果!
- Android 连续按下返回键完全退出应用
- android数据库升级(二)
- Spring对JTA的支持
- codeforces 2A Winner
- spring cron表达式
- md5加密解密汇总
- JAVA相关基础知识
- mysql的远程登陆设置
- RedHat未注册 无法使用yum的解决办法