为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

android 彻底封锁应用程序 返回键的捕获

2017-11-26 5页 doc 18KB 15阅读

用户头像

is_180829

暂无简介

举报
android 彻底封锁应用程序 返回键的捕获android 彻底封锁应用程序 返回键的捕获 android 彻底关闭应用程序 返回键的捕获 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。 我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy()里强制退出应用,或直接杀死进程,具体操作代码如下: @Override public boolean onKeyDown(int ke...
android 彻底封锁应用程序 返回键的捕获
android 彻底封锁应用程序 返回键的捕获 android 彻底关闭应用程序 返回键的捕获 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。 我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy()里强制退出应用,或直接杀死进程,具体操作代码如下: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //按下键盘上返回按钮 if(keyCode == KeyEvent.KEYCODE_BACK){ new AlertDialog.Builder(this) .setIcon(R.drawable.services) .setTitle(R.string.prompt) .setMessage(R.string.quit_desc) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { finish(); } }).show(); return true; }else{ return super.onKeyDown(keyCode, event); } } @Override protected void onDestroy() { super.onDestroy(); System.exit(0); //或者下面这种方式 //android.os.Process.killProcess(android.os.Process.myPid()); } 1 楼 rongchengzhuang 2010-04-30 嗯哪,android程序的假退出 挺麻烦,不好控制生命周期 2 楼 yuanliyin 2010-04-30 rongchengzhuang 写道 嗯哪,android程序的假退出 挺麻烦,不好控制生命周期 所以我觉得像droid这样的多任务系统,明明自己是想关闭应用的,结果后台进程一看还是一堆,是不是在开发应用的时候,都要注意点这个人性化问题,比如,退出前给提示:关闭|返回桌面|取消,这样会不会好些呢,呵呵 3 楼 mncc 2010-05-04 div class= quote_title yuanliyin 写道 /div div class= quote_div p android.os.Process.killProcess(android.os.Process.myPid()); /p p /p /div p 没这样子试过,这样子自己强制结束自己不会抛异常吗, /p 4 楼 yuanliyin 2010-05-04 div class= quote_title mncc 写道 /div div class= quote_div div class= quote_title yuanliyin 写道 /div div class= quote_div p android.os.Process.killProcess(android.os.Process.myPid()); /p p /p /div p 没这样子试过,这样子自己强制结束自己不会抛异常吗, /p /div p 不会,就是直接相当于linux下直接kill掉一个进程 /p 5 楼 dongya1987 2010-05-04 好东西,谢楼主 6 楼 yzhong_sa 2010-05-08 System.exit(0);会导致整个应用的dalvik虚拟机实例crush掉,不鼓励这么做 杀进程是常用做法。 7 楼 moderating 2010-05-12 楼上几位是真的试过,还是想当然的瞎掰, System.exit(0);我试过,没用,更不会让整个JVM退出,android没这么傻 android.os.Process.killProcess(android.os.Process.myPid()); 我也试过,也没用,程序仍然在。 这个问题我基本上翻遍了网络,目前还没找到让程序真正退出的办法。只能写代码持有一个退出的标识,做相应的处理 8 楼 tangxuan1988 2010-05-29 Activity 里面的finish()只能结束Activity,线程这些怎么办呢, 9 楼 yuanliyin 2010-05-30 tangxuan1988 写道 Activity 里面的finish()只能结束Activity,线程这些怎么办呢, 线程不是进程,它是不是随着activity的生命周期结束而结束呢,有人了解内部机制不, 10 楼 houjunli001 2010-05-31 一个很好的学习Android的博客, 11 楼 shiquncai 2011-01-06 当应用不再使用时,通常需要关闭应用,可以使用以下两种方法关闭android应用: 第一种方法:首先获取当前进程的id,然后杀死该进程。 (建议使用) android.os.Process.killProcess(android.os.Process.myPid()) 第二种方法:终止当前正在运行的Java虚拟机,导致程序终止 System.exit(0); 第三种方法:强制关闭与该包有关联的一切执行 ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); manager.restartPackage(getPackageName()); uses-permission android:name= android.permission.RESTART_PACKAGES / 但是以上在android2.2以前的版本都成测试成功,而android 2.2会有BUG 但是关闭应用 的所有activity 可以通过:每打开一个activity 就调用finish(),之后退出时候只关闭 当前的就行了~该方法我的项目正在使用 大量测试没有BUG 希望对你有所帮助~ 12 楼 yuanliyin 2011-01-06 最近没有在做应用了,谢谢提醒,回头试试 13 楼 chq32 2011-03-12 全部都试了,没有一种可以的,,难道真要故意抛个异常才行了,
/
本文档为【android 彻底封锁应用程序 返回键的捕获】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索