在Android中,Activity有个栈,一个Activity结束掉,会回到上一个Activity,并不是退出应用程式。
Android中,退出应用程式的方式:
通过pid
int pid = android.os.Process.myPid()获取当前应用程式的PID
android.os.Process.killProcess(pid)杀死当前程序
这种方法退出应用,是会保留某些后进程,例如:Service,Notifications等。
2.通过ActivityManager
ActivityManager manager = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE)获取应用程式管理器
manager.killBackgroundProcesses(getPackageName())强制结束当前应用程式
这种方式退出应用,会结束本应用程式的一切活动,因为本方法会根据应用程式的包名杀死所有程序包括Activity,Service,Notifications等。
呼叫System.exit(0);
其实还有一种方法也不错,把MainActivity设定为singleTop,先跳转到MainActivity然后finish就行,不过要注意停掉相应的Service
大家都知道 Android 的 Activity 是存著历史栈的,比如从 A ->B ->C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程式就自然退出了。 当然在 finish 的同时也需要是否自己程式的其他资源。所以需要想个办法把 Activity 给存起来。然后在程式退出的地方呼叫它们的 finish()方法。
使用全域性变数。对了,第一个想到的就是继承 Application,程式码入下。
public class AgentApplication extends Application { private List<Activity>activities = new ArrayList<Activity>()public void addActivity(Activity activity) {activities.add(activity)} @Overridepublic void onTerminate() {super.onTerminate()for (Activity activity : activities) {activity.finish()}onDestroy()System.exit(0)}}
然后在 Activity onCreate 的时候来呼叫 addActivity (),有人可能想到这个Application需要在所有的 Activity onCreate的时候都使用,需要做一个单例例项。其实根本不需要。在 Activity 中使用 this.getApplication() 就可以了。
最后在你需要推出程式的地方呼叫 application.onTerminate() 就可以了。记住:super.onTerminate() 必须呼叫,程式码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。
执行以上程式码后,在LogCat 中会出现一行提示:
Process 包名 (pid xxxxx) has died. 证明你的程式退出了。现在你可以测试了。
有几种方法,一种是:程式退出时,下方有写 在按一次退出程式
第二种,进 设定-应用程式-正在执行 这一栏自己关
有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。 后面添加了一个选单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附程式码: public boolean onCreateOptionsMenu(Menu menu){super.onCreateOptionsMenu(menu)MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit")item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener(){public boolean onMenuItemClick(MenuItem item){System.exit(0)return true}})return true}想到这样太不方便了,每次退出介面之后应用程式还在执行,今天查了下资料终于把这个问题给解决了, 网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this)添加当前Acitivity到ancivitylist里面去,最后在想退出的时候呼叫SysApplication.getInstance().exit()可直接关闭所有的Acitivity并退出应用程式。 附程式码:import java.util.LinkedListimport java.util.Listimport android.app.Activityimport android.app.AlertDialogimport android.app.Applicationimport android.content.DialogInterfaceimport android.content.Intentpublic class SysApplication extends Application { private List mList = new LinkedList()private static SysApplication instanceprivate SysApplication() { } public synchronized static SysApplication getInstance() { if (null == instance) { instance = new SysApplication()} return instance} add Activity public void addActivity(Activity activity) { mList.add(activity)} public void exit() { try { for (Activity activity : mList) { if (activity != null) activity.finish()} } catch (Exception e) { e.printStackTrace()} finally { System.exit(0)} } public void onLowMemory() { super.onLowMemory()System.gc()} } 在应用程式里面 的activity的oncreate里面新增SysApplication.getInstance().addActivity(this)如:public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState)
你可以长按主屏键后,在其中关闭应用程式。但并不能完全退出执行记忆体
问题一:安卓系统的手机,软件启动后闪退是什么原因? 首先要检查是不是你的手机内存的问题,因为当你的内存满了的时候手机就会变卡, 手机上的软件很有可能就无法正常运行
导致软件闪退,你可以在电脑上安装一个应用宝
运行之后――用数据线连接手机――我的手机――工具箱――手机优化
给手机做个全面的优化,杀毒,清理垃圾,卸载自带的没用的软件
清理出手机内存,腾出空间来,手机才会运行流畅
另外有可能是你的手机软件本身的问题,可能是软件文件被损坏
建议你卸载,重新安装,手机应用宝――页面最上面的搜索框额输入你要
下载的软件的名字――下载安装,就可以了,重装之后就能解决
问题二:安卓手机闪退怎么修复 1、安卓手机由于其系统特性原因,在手机缓存过多的情况下会导致运行变慢且出现闪退现象,这个时候,网友们可借助类似安卓清理大师等清理工具对手机进行一次深度扫描,或直接进入【设置】―【应用管理】―【全部】,找到出现状况的应用程序,清理数据和缓存进行删除即可。(ps,清除数据会清除掉应用的个人设置,账户信息等)。
2、后台运行程序过多也会导致手机闪退,因此网友们可借助ROOT大师等工具一键ROOT手机后禁止后台一些应用自启动。
3、手机杀毒软件有时候会对应用造成误判,导致其运行异常,最后造成闪退问题,对此,我不建议手机安装过多的杀毒软件,尽可能使用手机自带的杀毒软件。
4、应用版本过低也会导致手机闪退,原因是低版本的应用兼容不了手机的系统而导致闪退,因此,针对运行个别应用出现闪退时可卸载后再安装最新版本。
5、使用2G/3G网友造成闪退的可能性也很大,这是因为有些应用需要一个稳定的网络环境才能运行,因此,针对一些大型应用或游戏,建议在WiFi环境使用或将手机升级到4G。
6、在运行游戏时由于缺少数据包也会造成闪退,因此,这种情况可先安装好数据包。
7、部分软件对手机系统版本有一定要求,如系统版本太低也会造成软件闪退。网友们可通过更新升级手机系统版本来解决。
使用安卓手机必需要有一个好的习惯,不然再怎么弄都是一样的情况。一般情况下,由手机缓存大而引起的闪退几率较高,因此,网友们应该养成定时清理手机缓存的习惯。
问题三:安卓手机软件闪退怎么办 安卓软件停止运行解决方法 闪退的原因和处理方法
1、缓存垃圾过多
平时在使用软件的过程中,会产生一些垃圾文件,如果长时间不清理会导致手机越来越卡,也会出现闪退状况。
进入设置C应用程序――全部――找到有问题的应用程序,清除数据或者缓存。(注:清除数据,会清除掉应用的个人设置、账户信息等。)
2、运行程序过多
如果不进行设置,很多软件都会自己运行,而手机后台程序过多会造成内存不足,从而造成应用闪退。如出现软件闪退,可先清理内存后再试试。
3、手机杀毒软件
部分手机软件存在着恶意代码,会被杀毒软件拦截因而不能正常进入,应该通过绿色下载平台或者使用软件商店来下载安全系数较高的游戏。
(注:以上三个原因都现在都可以通过安全软件清理,轻松解决。但需要注意在删除一些大型文件时请谨慎。)
4、应用版本问题
如果应用的版本较低,会导致应用软件不兼容,造成闪退。如果是版本太旧,更新为新版本即可。
如新版本如果出现闪退,是应用改版本还在调试中,无需担心,会很快修复。
5、网速问题
部分软件需要一个稳定的网络,使用的是2G/3G网络,造成闪退的可能性比较大,建议在有WiFi的情况下玩比较好。
6、缺少数据包
一些大型游戏需要数据包才能运行。所以要先安装好数据包才能使用。
7、系统不兼容
部分软件对版本有一定的要求,如果系统版本过低,软件是不能支持的,所以会闪退。
8、分辨率不兼容
一些软件对手机分辨率有一定的要求,如果手机分辨率不兼容,有部分软件就容易出现闪退或其它错误。
问题四:应用程序经常闪退出去怎么办?安卓 要么是软件兼容性差 或者是系统问题
要么你手机硬件 内存之类的跑不动
第一个问题可以刷机或者升级软件来解决第二个的话 只能换手机了
问题五:安卓7.0软件闪退怎么办 传奇最经典网页版,多人团战跨服竞技玩法冰火战场,十年最经典游戏,英雄合击,3D特效绚丽,赶紧注册试玩一下! >目前发现一些玩家出现了安卓7.0游戏闪退的情况,在这里我们表示抱歉,我们将尽快在后续版本进行修复。目前,玩家可以暂时先使用安卓模拟器进行游戏体验。PC模拟器下载地址:点击下载
问题六:安卓5.1使用很多软件闪退怎么办 1、可能运行问题。可重新启动手机 或者电脑。2、可能是内存不够接收不到 新的信息。可用软件清理一下垃圾,释放内存。3、可能是下载的软件损害。可把原软件 卸载,然后重新下载,安装。4、 可能是 日期或者时间不对。可查看一下日期时间,是否 正确。如果日期 和时间不正确,将会导致网络错误的出现。5、也可能是软件的服务器出现问题,只需要等一会恢复。
问题七:安卓手机软件老是闪退怎么办? 转;现在有很多的手机玩游戏,玩QQ都会出现闪退的问题,就是突然软件闪退不运行,玩游戏突然退到主页面,发短信,照片,发一条或者拍一张都直接闪退掉。
解决方法:
1、首先查看自己有没有误删什么软件,或者系统程序。最常见的就是手机root删除软件,是可以刷回来的。
2、回复出厂设置,当然有可能没有什么效果。
3、怎么解除root。?去维修店修修看,或者下载刷机大师电脑版的,应该就可以解除root。
4、QQ突然闪退。有的QQ程序是从商店里下载的,有可能是QQ版本更新的优化问题,尝试下恢复以前的程序,试试看。
5、lbe管理自启动了啊,尝试关掉那个功能就会好了。
6、LBE的原因 卸载就好了。
7、最后实在没办法,就只能拨打三星客服热线问问了。
问题八:手机应用程序闪退怎么办 闪退,多指在移动设备(如iOS、Android设备)中,在打开应用程序时出现的突然退出中断的情况(类似于Windows的应用程序崩溃)。
多表现为:应用程序画面一闪而过,随即退回到主屏幕。应用程序出现闪退,可能是自身漏洞,也有可能是设备问题。
下面,我们就来看看苹果手机闪退修复教程。
方法一:apple ID不同导致闪退的解决办法
1、判断安装的app是哪个账户下载的。(在“iphone闪退修复工具”的应用程序列表中可以查看)
2、使用“iphone闪退修复工具”的“修复闪退”功能进行修复处理。点击“iphone闪退修复工具”左侧“站点资源”的正版应用,然后选择右侧出现的“修复闪退”按钮。
3、点击修复设备闪退功能依然出现闪退及输入Apple ID问题,请检查是PP助手(PC)版是否提示修复成功。
4、这种方法的原理是排除app本身bug,唯一原因就是appstor帐号授权失效了,这台iphone5没那个闪退软件的帐号授权是打开不了的,一打开就闪退,点闪退修复就等于用他们的帐号授权一下你的设备,就能继续用了。
方法二:因iphone越狱后未授权导致闪退的
1、如果IOS设备刚越狱,重启试试。
2、在IOS的app store 下载一个免费的软件,这样可以轻松解决授权问题!闪退的问题也就不存在了。在此友情提醒大家,苹果越狱有风险,因为有一些插件的影响,可能会导致一些应用程序不兼容,从而导致不能正常打开的情况。
注意事项
方法一如果修复后还是出现闪退问题,就只能用一下方法啦:把原有的app软件删除,然后在app store 中重新安装app软件。删除iphone应用软件:在主屏上按住要删除的应用程序图标保持 3 秒以上,然后图标会出现抖动,点击要删除应用程序图标上左上角的“X”即可删除应用
求采纳为满意回答。
问题九:手机下载的软件都闪退怎么办 闪退!是下载的软件不跟手机兼容
问题十:怎么找到安卓中程序闪退的原因 闪退的原因和处理方法
1、缓存垃圾过多
平时在使用软件的过程中,会产生一些垃圾文件,如果长时间不清理会导致手机越来越卡,也会出现闪退状况。
进入设置C应用程序――全部――找到有问题的应用程序,清除数据或者缓存。(注:清除数据,会清除掉应用的个人设置、账户信息等。)
2、运行程序过多
如果不进行设置,很多软件都会自己运行,而手机后台程序过多会造成内存不足,从而造成应用闪退。如出现软件闪退,可先清理内存后再试试。
3、手机杀毒软件
部分手机软件存在着恶意代码,会被杀毒软件拦截因而不能正常进入,应该通过绿色下载平台或者使用软件商店来下载安全系数较高的游戏。
(注:以上三个原因都现在都可以通过安全软件清理,轻松解决。但需要注意在删除一些大型文件时请谨慎。)
4、应用版本问题
如果应用的版本较低,会导致应用软件不兼容,造成闪退。如果是版本太旧,更新为新版本即可。
如新版本如果出现闪退,是应用改版本还在调试中,无需担心,会很快修复。
5、网速问题
部分软件需要一个稳定的网络,使用的是2G/3G网络,造成闪退的可能性比较大,建议在有WiFi的情况下玩比较好。
6、缺少数据包
一些大型游戏需要数据包才能运行。所以要先安装好数据包才能使用。
7、系统不兼容
部分软件对版本有一定的要求,如果系统版本过低,软件是不能支持的,所以会闪退。
8、分辨率不兼容
一些软件对手机分辨率有一定的要求,如果手机分辨率不兼容,有部分软件就容易出现闪退或其它错误。
安卓手机彻底关闭后台程序的方法及步骤:
在手机上找到“设置”这个程序,点击打开。
2. 会出现以下的界面,有“全部设置”“常用设置”两个,选择“全部设置”后,会罗列出手机的各项设置。
3. 在全部的设置中,找到“受保护的后台程序”这一栏,点击进入。
4. 然后你会看到你的手机受到保护的各项程序,对于警示高耗电的,尽量关闭,不然会消耗电量。在不想后台运行的程序的后面的对勾去掉即可。
5. 如下图的情况,即有对勾的程序是受到保护的程序,没对勾的就是不再后台运行的程序。
6. 关闭这些后台悄悄运行的程序,会节省大量的电量,也能防止流量的消耗。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)