android app 退出功能,Android 完美退出 App (Exit)
大家好,又见面了,我是你们的朋友全栈君。
最近两天为了解决Android上面退出程序问题折腾了半死,在google & baidu 上面找了很久、很久出来的完全千篇一律,说的方法有三,但是经过我试验后全部不行。
三个方法分别是:
killProcess, 这种方式当你kill后 Activity 会返回到上一个Activity
Android Level 8(包含8)前使用一个API来操作,Level8以后又是另外一种,所以不能通用
使用 FLAG_ACTIVITY_CLEAR_TOP,从 A 到 B
下面介绍自己的方式:
大家都知道 Android 的 Activity 是存着历史栈的,比如从 A -> B -> C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程序就自然退出了。 当然在 finish 的同时也需要是否自己程序的其他资源。所以需要想个办法把 Activity 给存起来。然后在程序退出的地方调用它们的 finish()方法。
使用全局变量。对了,第一个想到的就是继承 Application,代码入下。
public class AgentApplication extends Application {
private List activities = new ArrayList();
public void addActivity(Activity activity) {
activities.add(activity);
}
@Override
public 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. 证明你的程序退出了。现在你可以测试了。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160722.html原文链接:https://javaforall.cn
相关文章
- Android基于DataBinding+Koin实现MVVM模式页面快速开发框架
- android okio使用方法,Android 开源框架 Okio 原理剖析「建议收藏」
- strictmode android,Android中的StrictMode
- 跨平台移动APP开发进阶(二):HTML5+、mui开发移动app教程[通俗易懂]
- strictmode android,(十三)Android 性能优化 StrictMode
- android 测试用例模板下载,app测试用例模板.doc
- android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解…
- Android保存图片到相册(适配android 10以下及以上)
- android 复制控件,Android长按复制文本功能[通俗易懂]
- Android修改字体_android设置字体样式
- uni-app 安卓APP开发记录
- 利用Frida绕过Android App(apk)的SSL Pinning
- java基于springboot外卖系统在线订餐系统app源码厨艺论坛APP
- com.android.tools.aapt2.Aapt2Exception: AAPT error: check logs for details
- 【Android 应用开发】Canvas 精准绘制文字 ( 测量文本真实边界 | 将文本中心点与给定中心点对齐 )
- 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati() 函数分析 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ③ ( 执行 compile-ffmpeg.sh clean 命令 | 下载并配置 android-ndk-r10e )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )
- 【错误记录】Android Studio 编译报错 ( Execution failed for task ‘:app:kaptDebugKotlin‘. A failure occurred w )
- [android] 在不同的activity之间传递数据详解手机开发
- 构建可靠的安卓 MSSQL APP(安卓 mssql app)
- 探索App与MySQL的交互之路(app与mysql交互)
- 探讨Android与iOS,我们将何去何从?
- 基于Android错误信息捕获发送至服务器的详解
- Android文件选择的实现代码
- 自己实现的android树控件treeview
- 六款值得推荐的android(安卓)开源框架简介