Android笔记-Activity

Activity是一个能够提供用户一个屏幕让用户能够来作某些交互的应用组件,好比拨打电话,拍照,发email或者查看地图。每一个activity会给出一个窗口来绘制用户界面。这个窗口一般会填满整个屏幕,但有时也会比屏幕小点而且浮动在其余屏幕的顶端。android

 

1.       Activity栈, Activity中能够启动新的Activity 当新的Activity启动后, 前一Activity被中止, 并保存在Activity栈。当前Activity被压入栈顶。ide

 

2.       建立Activity。须要继承Activity 并实现一系列的回调方法。两个重要的方法是布局

a.        onCreate(), 当系统建立当前Activity时会调用这个方法,在你的实现中,你应该初始化一些你的Activity的必要组件, 最重要的是,你必须调用setContentView()来来指定你的Activity的用户界面布局。 spa

b.        onPause(), 系统会在用户要离开(并不必定老是destroy)Activity的第一意向是调用这个方法。一般这是咱们须要提交一些用户会话中须要保存的改变(由于用户可能不再会回来)的时机; 这个方法是最后一个能够保证在进程被kill 以前调用,所以须要在这个方法里面存储相当重要的数据,并且这些操做必须是轻量级的, 否则会阻塞下一个Activity的转换进而影响用户的体验。 线程

 

3.       几个Activity的子类:orm

a.        ListActivity:含有ListViewActivity 对象

b.        TabActivity:提供支持用户Tab切换的Activity 继承

c.        PreferenceActivity:显式层级的preferenceActivity 生命周期

 

4.       必须在manifest文件中声明Activity,若是Activity不须要在其它应用中激活,则不须要提供intent filter 只能经过显式的intent来启动。反之则须要提供intent filter,能够经过隐式intent 启动,也能够经过设置android:exported 属性为false来使你的Activityprivate的。进程

 

5.       启动有返回结果的ActivitystartActivityForResult(), 须要实现onActivityResult()回调方法。当启动的Activity退出(finish)后系统会调用这个方法。

 

6.       结束Activityfinish()中止本身或finishActivity()来中止一个先前启动的Activity。因为系统自动管理了Activity的生命周期,因此大多数状况下,你不必显式的调用这些结束方法来中止Activity 这可能不利于用户体验。

 

7.       Activity生命周期. Activity在本质上存在于三种状态

a.        Resumed Activity在前台而且有用户焦点, 一般也叫运行状态。

b.        Paused 另外一个Activity在前台并拥有焦点,但它仍是可见的。也就是说当前拥有焦点的Activity是半透明或者是部分覆盖屏幕的。处在这种状态的Activity是彻底存活的(在内存中并和window manager链接) 可是系统会在内存极其低下时将其Kill

c.        Stopped 这个Activity彻底被其它Activity覆盖(在后台),处在这种状态的Activity也能够是存活的(在内存中但不与window manager链接) 当不可见系统内存低时会被Kill

 

PausedStopped状态的Activity可被系统Kill 不过仍然经过请求finish()方法。

 

8.       Activity生命周期的回调方法。

a.        启动相关方法,onCreate()onStart()onRestart()onResume() 这些方法以后Activity的宿主进程通常不会杀掉, 除非在没有任何资源的紧急状况下; 结束相关方法onPause()onStop()onDestroy(),这些方法以后Activity的宿主进程能够被杀掉。

b.        全部对这些回调方法的实现必须在作任何事情以前调用super的相关方法。

c.        这些回调方法, 能够监控Activity生命周期中的三个嵌套循环。

d.        完整的生命周期: onCreate()onDestroy()之间发生,应该在onCreate()中初始化资源和状态,如设置View onDestroy()中释放全部残存的资源。 Activity须要一个线程, 则应在onCreate()中启动线程,而在onDestroy()中结束线程()

e.        可视生命周期:在onStart()onStop()之间发生,在这期间用户能够在屏幕上看到这个Activity。在这期间能够维护须要展现给用户显式的资源。如在onStart()中注册BroadcastReciver来接收影响用户UI的改变,并在onStop()中注销掉。

f.         前台生命周期:在onResume()onPause()之间, 在这期间其在全部Activity前面而且拥有用户的输入焦点, 这个状态转换比较频繁,里面的操做应该轻量级。

 

 

9.       保存Activity的状态, 生命周期中的回调方法能够在Activity对象没有被销毁时保留Activity的状态,可是当Activity对象被系统销毁后,当回到这个Activity时不能简单的start这个Activity,而须要从新建立。 可是用户并不知道这个Activity被销毁并从新建立了它,用户但愿回到以前的样子。 这就须要另外一个回调方法onSaveInstanceState()来保存Activity的状态信息。

 

10.   onSaveInstanceState()会传递你一个Bundle对象,你能够把你须要保存的信息存放在里面, 当系统杀掉了你的Activity所在的进程而且用户又返回到你的Activity时, 这时就会把这个Bundle对象传到onCreate()onRestoreInstanceState()方法, 并利用它来恢复Activity的状态, 若是没有状态信息储存, Bundle对象为空。Activity在每次销毁以前onSaveInstanceState()并不必定都会执行,如当栈顶的Activityback 退到前一Activity时就不会执行。 但从Activity(A1)进入另外一Activity(A2)时,会在A1.onPause()前执行A1.onSaveInstance(),并设置Bundle 若是系统销毁了A1 A2返回A1时, A1会从新A1.onCreate() 并传入以前设置的Bundle

 

11.   Activity提供默认的onSaveInstanceState()方法来保存UI信息,但其它信息须要你本身保存。View中实现了方法dispatchSaveInstanceState()onSaveInstanceState()来提供须要保存的UI信息,但View须要设置ID属性且saveEnable的值为true

 

12.   Activity启动,回退等状况下各回调方法执行顺序(全部Activity在同一进程),各回调方法都是在主线程执行的,所以严格按照顺序执行, 当须要作相关同步操做时尤为要注意。

a.        一个Activity(A1)中启动另外一个Activity(A2), A2彻底覆盖A1  

启动:A1.onSaveInstance() àA1.onPause() àA2.onCreate()àA2.onStart()àA2.onResume()àA1.o

nStop()

回退(A1未被销毁)A2.onPauseàA1.onRestart()àA1.onStart()àA1.onResume()àA2.onStop()

àA2.onDestroy()

回退(A1被销毁)A2.onPauseàA1.onCreate()àA1.onStart()àA1.onResume()àA2.onStop()

àA2.onDestroy()

 

b.        一个Activity(A1)中启动另外一个Activity(A2), A2部分覆盖A1或半透明  

启动:A1.onSaveInstance() àA1.onPause() àA2.onCreate()àA2.onStart()àA2.onResume()

回退(A1未被销毁)A2.onPauseàA1.onResume()àA2.onStop()àA2.onDestroy()

启动后A1被销毁,则A1会当即重建A1.onCreate()àA1.onStart()àA1.onResume()àA1.onStop()

A2启动A3

启动:A2.onPause()àA1.onStop()àA3.onCreate()àA3.onStart()àA3.onResume()àA2.onStop()

回退(A1未被销毁)A3.onPauseà A1.onRestart()àA1.onStart()à A2.onRestart()àA2.onStart()àA2.onResume()àA3.onStop()àA3.onDestroy()

回退(A1被销毁)A3.onPauseà A1.onCreate()àA1.onStart()àA1.onResume()àA1.onPause() A2.onRestart()àA2.onStart()àA2.onResume()àA3.onStop()àA3.onDestroy()

 

13.   处理配置变法:一些设备的配置可能会在运行时改变,如屏幕方向,键盘及语言等,当这些改变发生时,系统会销毁并重启这个ActivityonSaveInstanceState()àonPause()àonStop()àonDestroy()àonCreate()àonStart()àonResume() 重启是为了让你可以适应新的配置并自动重载资源。要适当处理这些变化,使用onSaveInstanceState()onRestoreInstanceState()方法(或者onCreate())来保存你的状态, 而在onConfigurationChanged()中处理变化。

相关文章
相关标签/搜索