Android程序的隐藏与退出
Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了.
Android程序的隐藏,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity.
现在的情形是,一个应用程序带有启动画面或者启动动画,进入程序后进行操作,当应用程序退到主Activity的时候,再按back键或者程序中自己写的back按钮,此时程序会结束当前主Activity,当再次点击应用程序图标时,程序会重新打开,会从头显示启动画面,对于用户来说,就知道这个程序刚才已经被结束掉了,而用户的本意是显示桌面,为什么我退出的时候都没有提醒一下!例如带有启动画面的音乐播放软件,如果程序没有做任何处理,当主Activity退出时,播放音乐的服务还没有结束,当程序退出后音乐还在播放,当用户再次点击桌面上的音乐程序图标时,会再次执行启动画面,对用户来说,怎么程序还在运行的时候,又重新打开了一个新的,是不是我这样操作会启动两个音乐播放器啊!针对这样的情况,就需要在主Activity里按back时候时行监听,询问用户是退出还是隐藏,或者执行程序中设置的一个默认操作。如果是退出,我们就需要结束程序进程,Activity、Service等等,如果是隐藏,我们就需要实现手机上按Home时的效果,也就是隐藏后,当用户再次单击桌面上程序图标时,不会执行启动画面,而是直接进入程序栈中最上层退出时正在显示的Activity。
实现按Home键时隐藏程序的效果:
1:Android 2.0之前需要监听按键事件,进行判断是不是按下了back键
2:Android 2.0之后系统提供了一个onBackPressed()方法,这个方法就是专门用来监听back键事件的,所以只需重写onBackPressed()方法即可
public void onBackPressed() {
//实现Home键效果
//super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了
Intent i= new Intent(Intent.ACTION_MAIN);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
}
退出应用程序的实现:可以自己写个方法,例如:
public void exitProgrames(){
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
android.os.Process.killProcess(android.os.Process.myPid());
}
需要添加权限:<uses-permission android:name="android.permission.RESTART_PACKAGES" />
Android程序的隐藏与退出的更多相关文章
- 你真的有必要退出吗——再说Android程序的退出功能
转自你真的有必要退出吗--再说Android程序的退出功能 搞Android开发有一段时间了,相信很多从Windows开发过来的Android程序员都习惯性地会跟我一样遇到过同一个问题:如何彻底退出程 ...
- Android程序完全退出的三种方法
很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现. 首 ...
- 退出Android程序时清除所有activity的实现方法
思路: 1. 自定义ActivityList管理类,添加删除维护该list; 2.Activity Stack 类似上面: 3.singleTask定义一个Activity为该启动模式,然后当返回时, ...
- Android程序crash处理
Android程序crash处理 时间 2014-11-24 13:45:37 CSDN博客 原文 http://blog.csdn.net/allen315410/article/details ...
- Android程序意外Crash后自动重启
1.自定义UncaughtExceptionHandler public class UnCeHandler implements UncaughtExceptionHandler { private ...
- Delphi Android程序启动过程
Delphi的Android程序是原生的程序,也就是NativeActivity.那么就需要先看一下NativeActivity的原理, 在AndroidManifest.xml文件里面指定入口act ...
- android程序---->android多线程下载(一)
多线程下载是加快下载速度的一种方式,通过开启多个线程去执行一个任务,可以使任务的执行速度变快.多线程的任务下载时常都会使用得到断点续传下载,就是我们在一次下载未结束时退出下载,第二次下载时会接着第一次 ...
- 给Android程序员的六个建议
给Android程序员的六个建议 分类: 安卓相关2015-07-14 23:58 177人阅读 评论(0) 收藏 举报 android程序员 如果你一年前写的代码 , 在现在看来你还感觉写的很不错 ...
- Android 程序员必须掌握的三种自动化测试方法
在日常的开发中,尤其是app开发,因为不像web端那样 出错以后可以热更新,所以app开发 一般对软件质量有更高的要求(你可以想一下 一个发出去的版本如果有重大缺陷 需要强制更新新客户端是多么蛋疼的事 ...
随机推荐
- 使用Git操作GitHub代码入门教程
GitHub除了网页操作外,还可以借助本地客户端git(或github for windows)来增删修改远程代码.使用Git操作来连接GitHub可以通过Https或SSH方式,使用SSH方式可以免 ...
- sendkeys && appactivate
sendkeys 用于输入键盘按键 appactivate 用于聚焦程序 on error resume next set ws = createObject("wscript.she ...
- 程序员带你十天快速入门Python,玩转电脑软件开发(三)
声明:本次教程主要适用于已经习得一门编程语言的程序员.想要学习第二门语言.有梦想,立志做全栈攻城狮的你 . 如果是小白,也可以学习本教程.不过可能有些困难.如有问题在文章下方进行讨论.或者添加QQ群5 ...
- 什么是JavaScript?
- CI框架篇之控制器篇--设置路由(1)
CodeIgniter 定义默认控制器 当你的网站不存在某个URI 或者 用户直接从根目录访问的时候,CodeIgniter 会加载默认控制器. 打开 application/config/route ...
- java web hello world
首先在eclipse 里面创建一个java 动态项目, 记住路径,这里是直接通过根目录直接访问的webContent目录下面 的文件, 创建好后 ,在本地配置Tomcat服务器, 将server加入到 ...
- ArcGIS 设置地图显示范围大小
Arcmap的FullExtent默认是地图加载的时候的extent.其实这个fullExtent是可以设置的. 打开ArcMap,选择左边图例的Layers ,右键点击,选择“Properties. ...
- IXListView的自我分析一
XListView是一个很不错的用来刷新和加载的控件,下拉刷新和上拉加载.目前这个控件已经没有更新,这个不重要,重要的是它确实还不错,之后可能一直有人在用. android没有提供原生的这类控件,需要 ...
- 使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比
今天偶尔看到sql中也有with关键字,好歹也写了几年的sql语句,居然第一次接触,无知啊.看了一位博主的文章,自己添加了一些内容,做了简单的总结,这个语句还是第一次见到,学习了.我从简单到复杂地写, ...
- 关于通过bindService启动的service,在unbindService后service是否继续运行的讨论
有三种情况:如果直接使用服务,则没有必要进行绑定,但是如果要使用服务里面的方法,则要进行绑定.具体的启动情况有下: 1.当启动时,单独调用bindService方法,在unbindService后,会 ...