[Android问答] 如何实现“退出应用”功能?

[Android问答] 如何实现“退出应用”功能?

刚从桌面应用开发转做手机开发的同学常常被这个问题困扰——用户按下Home键后,应用不是“完全退出”而是“运行在后台”,它仍然占用着系统资源,这么多后台运行的应用必然导致系统变慢,是不是应该在我的应用里给用户提供一个“退出菜单”或“退出按钮”呢?

我在Android开发文档里暂时没有找到关于这个问题的解释,但经过在网上调查很多资料以后,我认为答案是比较明显的:不应提供“退出应用”功能

虽然文档里没有明确说明,但假如这是常用功能,应该有简便的方法实现,而实际上要靠代码“退出”一个应用并非易事。以下总结了能够模拟退出效果的两个方案:

方案1:打开系统主屏来模拟应用退出的效果,这和用户按Home键没有什么区别。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

方案2:直接杀掉当前应用进程。这个方法太暴力了,我找到一段iOS开发文档,上面强烈不建议使用杀进程的方式来退出应用,原因也适用于Android系统:这样退出的效果容易让用户以为应用崩溃了。

int pid=android.os.Process.myPid();
android.os.Process.killProcess(pid);

此外,有人建议调用System.exit(0)退出应用,实际测试发现这个方法常常只能关闭当前Activity,或是根本不起作用。

由此可以看出,Android系统的设计里本来就没有“退出应用”的机制,当用户按下Home键或在应用首页里按下Back键后,应用被置于后台,而何时要彻底杀掉应用进程则由系统决定。Android和iOS都已抛弃了“退出应用”这个概念,对手机用户来讲,他只需要知道“启动应用”——概念越少越简单。

参考资料:

Quitting an application - is that frowned upon?
android - exit application code
How to close/exit an application in android?
Proper way to exit iPhone application?
How do I programmatically quit my iOS application?

本文转自博客园八进制的博客,原文链接:[Android问答] 如何实现“退出应用”功能?,如需转载请自行联系原博主。

时间: 2017-12-05
Tags: android, ios, 问答

[Android问答] 如何实现“退出应用”功能?的相关文章

Android 实现双击退出的功能_Android

实现android双击后退键退出当前APP功能 实现该功能基本思路是, 1, 监听后退键 , 比较两次后退间隔 , 低于两秒则出发退出 2, 退出当前APP 我选择在基类中BaseActivity 中设置监听,代码如下: public void onBackPressed() { //Preferences 中获取是否双击退出 boolean isDoubleClick = true; //BaseApplication.get("ifDoubleClickedBack", true)

应用-android webview 怎么实现退出功能

问题描述 android webview 怎么实现退出功能 就是做了一个APP的壳,里面直接套webview 请问这样的话 退出应用的功能怎么实现呢? 解决方案 网页上做个链接,捕获链接跳转即可 解决方案二: Android webView 实现与JSAndroid Webview实现文件下载功能Android: 扩展WebView 和ViewPager实现viewpager中的水平滑动,类似Gmail的效果 解决方案三: 记得是重写WebView的goback方法. 解决方案四: 退出的时候还

Android 实现双击退出的功能

实现android双击后退键退出当前APP功能 实现该功能基本思路是, 1, 监听后退键 , 比较两次后退间隔 , 低于两秒则出发退出 2, 退出当前APP 我选择在基类中BaseActivity 中设置监听,代码如下: public void onBackPressed() { //Preferences 中获取是否双击退出 boolean isDoubleClick = true; //BaseApplication.get("ifDoubleClickedBack", true)

[Android问答] ListView如何加载远程图片?(附代码)

[Android问答] ListView如何加载远程图片?(附代码)  ListView在Android应用里扮演非常重要的角色,但很多开发者在使用ListView时都遇到过不少麻烦.一个常见的问题是:列表中要显示一系列记录,每条记录带有一张缩略图(产品照片.用户头像等等),而这个缩略图是通过一个远程URL地址来标识的.这样的应用场景该如何实现呢? 为了避免下载图片带来的延迟,所有远程图片都应该使用异步方式加载,即使用单独的线程下载图片,待图片下载完毕后显示在ImageView里.Android

Android实现有道辞典查询功能实例详解_Android

本文实例讲述了Android实现有道辞典查询功能的方法.分享给大家供大家参考,具体如下: 这是我做的一个简单的有道Android的DEMO,只是简单的雏形.界面设计也有点丑陋呵呵~ 看看下面的效果图: 第一步:思路解析 从界面看一共用了三个控件EditText,Button,WebView.其实是四个,是当我们查询内容为空的时候用来提示的Toast控件. 我们在EditText输入查询内容,这里包括中文,英文.然后通过参数的形式,从http://dict.youdao.com/m取出数据把结果

Android开发中应用程序分享功能实例_Android

本文实例讲述了Android开发中应用程序分享功能.分享给大家供大家参考,具体如下: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); //设置类型 shareIntent.setType("text/plain"); //设置分享的主题 shareIntent.putExtra("android.intent.extra.SUBJECT", "分享&

Android实现返回拍摄的图片功能实例_Android

本文实例讲述了Android实现返回拍摄的图片功能.分享给大家供大家参考.具体如下: 第一步: try { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 0); } catch (ActivityNotFoundException e) { // Do nothing for now } 第二步: @Override protected void onActi

Android 仿QQ头像自定义截取功能_Android

看了Android版QQ的自定义头像功能,决定自己实现,随便熟悉下android绘制和图片处理这一块的知识. 先看看效果: 思路分析: 这个效果可以用两个View来完成,上层View是一个遮盖物,绘制半透明的颜色,中间挖了一个圆:下层的View用来显示图片,具备移动和缩放的功能,并且能截取某区域内的图片. 涉及到的知识点: 1.Matrix,图片的移动和缩放 2.Paint的setXfermode方法 3.图片放大移动后,截取一部分 编码实现: 自定义三个View: 1.下层View:ClipP

数据-Android软件中用户的评论功能是怎样实现的?求大牛解答。

问题描述 Android软件中用户的评论功能是怎样实现的?求大牛解答. 比如,微博客户端一篇微博,下边有多个用户的相关评论, 这些评论的数据该怎样存放?总不能存放到Mysql 吧..那样总有一天把服务器崩溃的, 还有就是,用户的点赞功能. 那么多的微博,怎样判别用户之前对它点赞过了,不让其点赞,没有允许点赞? 解决方案 数据肯定在服务器上要保留,本地也可以保留缓存,每个用户有id,或者记录设备id,这样就可以知道之前是否干过 解决方案二: 兄弟,当然有后台啊,这些数据都是存在后台服务器的啊,展示