三九宝宝网宝宝百科宝宝知识

android的activity的生命周期为什么由系统管理

02月10日 编辑 39baobao.com

[有关于生命的小故事]欧.亨利:最后一片叶子 为生命画一片树叶 只要心存相信,总有奇迹发生,希望虽然渺茫,但它永存人世。 美国作家欧.亨利在他的小说《最后一片叶子》里讲了个故事:病房里,一个生命垂危...+阅读

一、基础1.1自己创建的activity必须要继承类Activity(或其子类)。在activity里,为了实现activity各种状态的切换,你必须实现指定的回调方法。以下是最为重要的两个回调方法onCreate():这是必须实现的回调方法,启动一个 activity时会首先调用此方法。因此,在onCreate()的方法体里,你应该初始化该activity必要的控件。值得注意的是,在这里你必须调用setContentView(View view)方法去呈现用户的界面。

onPause():在用户将要离开activity时调用此方法(指的是此时activity处于半透明状态且没有获取用户的焦点)。通常在这样的状态下,你需要处理用户数据的提交、动画处理等操作。1.2销毁activity你可以调用finish()方法去销毁一个activity。同样得,你可以调用finishActivity()方法去销毁一个你刚刚启动的activity。tips:在多数情况下,你是不需要显式地调用finish…()方法去销毁一个activity。

在将要讨论到的activity生命周期里,你可以知道,Android系统会为你管理activity的生命周期,所以你并不需要显式销毁activity(即调用finish类方法)。显式地调用finish类方法,会对用户的体验产生不利的影响,除非你确实是不希望用户返回到此activity(界面),才去显式调用finish类方法。

二、认识activity的生命周期2、1Activity的生命周期对它的任务、backstack和与此有关联的activity有着直接的影响。

因此想开发出一个健壮的有弹性的Android程序,你需要学会如何去管理activity的生命周期(即调用各种回调方法)。activity的生命周期主要包含一些三种状态:

(1)运行态(Resumedstate)此时Activity程序显示在屏幕前台,并且具有焦点,可以与用户的操作进行交互,如向用户提供信息、捕获用户单击按钮的事件并做处理。

(2)暂停态(PausedState)此时Activity程序失去了焦点,并被其他处于运行态的otherActivity取代在屏幕显示,但otherActivity程序并没有覆盖整个屏幕或者具有半透明的效果—此状态即为暂停态。

处于暂停态的Activity仍然对用户可见,并且是完全存活的(此时Activity对象存留在内存里,保留着所有状态与成员信息并保持与窗口管理器的连接)。如果系统处于内存不足的情况下,会杀死这个Activity。(3)停止态(StoppedState)当Activity完全被另一个otherActivity覆盖时(此时otherActivity显示在屏幕前台),则处于停止态。处于停滞态的Activity依然是存活的(此时Activity对象依然存留在内存里,保留着所有的状态和与成员信息,但没有与窗口管理器保持连接),而且它对用户是不可见的,如果其他地方需要内存,系统会销毁这个Activity。

处于暂停态(PausedState)或者停止态(Stopped State)的Activity,系统可以通过调用finish()方法或者直接终止它的进程来销毁此Activity(从内存中清楚此Activity对象)。被finish()或者销毁的Activity再重新打开时,是需要再次初始化此Activity的。2、2当一个Activity从一种状态转到另一种状态时,会通过调用回调方法来通知这种变化。这些回调方法都是可以重写的,你可以根据程序的的需要来选择重写对应的回调方法。

以下列出了Activity生命周期里的基本回调方法:public class ExampleActivity extends Activity { Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // The activity is being created. } Override protected void onStart() { super.onStart(); // The activity is about to become visible. } Override protected void onResume() { super.onResume(); // The activity has become visible (it is now "resumed"). } Override protected void onPause() { super.onPause(); // Another activity is taking focus (this activity is about to be "paused"). } Override protected void onStop() { super.onStop(); // The activity is no longer visible (it is now "stopped") } Override protected void onDestroy() { super.onDestroy(); // The activity is about to be destroyed. }}笔记:在方法体里,必须先调用父类对应的实现方法super.Xxx(),再执行其他的操作(如上面代码所示)。

为了习惯,下面也提供一些代码来测试一些这些方法的使用,在博客的最后面。总的来说,这些回调方法定义了Activity整个生命周期。在生命周期里通过重写这些回调方法,,你可以监控以下下三个嵌套的方法循环。完整存活的时间:Activity的完整存活的时间是自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。

例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在 onDestroy()销毁线程。可见状态的时间:Activity的可见状态是自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。

例如,当用户不再看见我们显示的内容时,我们可以...

以下为关联文档:

亲知道我爱你我爱你你出现在我的生命里是什么歌吗我爱你 作词:陈富荣/李安修 作曲:陈富荣 我也不知 这是怎么一回事 我的情绪为什么 忽高又忽低 从来不在意命运 如何的诡异 直到有你 出现在我生命 就像飘在天空 那一颗流星 静...

生命之源含18种天然豆类果蔬纤维不含泻药成分吧你好,属于保健品,纯天然百分百果蔬精华生命之源:“排出毒素、一身轻松” 主要成分: 100%纯天然豆类蔬果精华。含洋车前子壳,异麦芽低聚糖,果糖,柠檬粉,菠菜粉,油棕榈纤维,燕麦纤维,苹果...

华芝国际生命之源的成份是什么?怎么做代理商生命之源成分:1.psyllium Husk 西连壳纤维 2.Crystaline Fructose 果糖 3.Spinach Powder 菠菜粉 4.oil Palm Fibre 棕榈油纤维 5.oat Fibre 燕麦纤维 6.Wheat Grass 小麦草...

生命的故事与感悟如:珍惜生命创造价值拯救生命珍惜生命中细小的事 有一天,仪山禅师在洗澡的时候,因为水太热,就叫弟子提桶冷水来加。有一个弟子奉命提了水来,将热水加凉了,便顺手把剩下的水倒掉。 禅师很不高兴,说道:“你怎么如...

生命的价值的作文 700字不要举生活实例的生命的价值蜡烛固然不美,但它在人们陷入黑暗时燃烧着自己,给人们以光明的享受;彩虹固然短暂,但它那雨后天晴瞬间的存在,给人们以美好的回忆。“鞠躬尽瘁,死而后已”是忠诚谋士们的...

关于生命的价值论据鲁迅先生就是一个很好的例子,他的一生都在为文化革命所奋斗,他以笔作为武器,创作了无数的经典作品,唤醒了无数人去拯救国家命运。鲁迅先生从病重至逝世的两个月时间内,共给青年作...

我想写篇生命的价值的作文生命的价值 有一段对话是这样的:有一道雨后的彩虹看到弧形的石桥,对她说:“我的大地上的姐妹,你的生命可比我长久多了。” 石桥回答:“怎么会呢?你那么美,在人们的记忆中必然是永恒...

生命的价值为话题作文生命的价值 生命对于每个人都只有一次,结果都是死亡,可过程是自己的,人生的体验不尽相同。生命是一种历程,奋斗了才会有收获。 我不敢去诠释生命,我只想给大家说两个故事. 一个著...

以拯救生命为话题的议论文有的人开上了夏利车就很幸福,就期待着我的到来;我所生活的世界,在我还没有来之前,结果之所以一不同,就是因为命运不同,可怜的罗杰、阳光与否都回咎与生活,或是命运?又怎么能走向光明...

推荐阅读
图文推荐