Android 的四大组件:
名称 | 作用 |
---|---|
Activity | 活动,UI页面,与一个用户交互 |
Service | 服务,无页面,在后台运行 |
Broadcast | 广播 |
ContentProvider | 内容提供者,主要与提供应用之间交互数据 |
1. Activity 展示UI与用户交互
Activity是由Activity栈管理的,Activity有四种状态:
状态名称 | 描述 |
---|---|
运行状态 | 当Activity位于栈顶时,此时正好处 于屏幕最前方,此时处于运行状态 |
暂停状态 | 当Activity失去了焦点但仍然对用于可 见(如栈顶的Activity是透明的或者栈顶Activity并 不是铺满整个手机屏幕) |
停止状态 | 当Activity被其他Activity完全遮挡,此时此Activity对 用户不可见,此时处于 |
销毁状态 | 当Activity由于人为或 系统原因(如低内存等)被销毁,此时处于 |
在每个不同的状态阶段,Adnroid系统对Activity内相应的方法进行了回调。因此,我们在程序中写Activity时,一般都是继承Activity类并重写相应的回调方法。
一个最简单的完整的Activity生命周期会按照如下顺序回调:onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy。称之为entire lifetime。
回调方法 | 是否可见 |
---|---|
onCreate() | visible lifetime |
onStart() | visible lifetime |
onResume() | foreground lifetime |
onPause() | visible lifetime |
onStop() | invisible lifetime |
onDestroy | invisible lifetime |
页面跳转时生命周期的变化:
A->B:
将依次执行A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop。
Back键:
将依次执行B:onPause -> A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy。
此时如果按下Back键,系统返回到桌面,并依次执行A:onPause -> A:onStop -> A:onDestroy。
此时如果按下Home键(非长按),系统返回到桌面,并依次执行A:onPause -> A:onStop。由此可见,Back键和Home键主要区别在于是否会执行onDestroy。
//通过重写按下Back键的回调函数,转成Home键的效果即可。
@Override
public void onBackPressed() {
Intent home = new Intent(Intent.ACTION_MAIN);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);
}
activity.moveTaskToBack(true);
//moveTaskToBack()此方法直接将当前Activity所在的Task移到后台,同时保留activity顺序和状态。
信息来源:
http://www.cnblogs.com/lwbqqyumidi/p/3769113.html
http://www.cnblogs.com/fansen/p/5667450.html
http://blog.csdn.net/feiduclear_up/article/details/45971119