您的位置:首页 > 移动开发 > Android开发

Android-Activity生命周期 基本方法的作用

2016-08-05 21:00 429 查看

Activity生命周期 基本方法的使用

什么是生命周期,通俗的讲就是从出生到死亡

Activity的生命周期:

onCreate()

创建时调用 activity 的第一个生周期,创建一些视图对象等等(不是创建 activity 对象),初始化控件,加载数据等等所有的操作都在这里执行

onRestart()

不可见到可见时调用,activity重新回来的回调,比如被其他 activity 遮挡后,遮挡的activity被销毁了,再次重见天日

onStart()

用户可见时调用,程序进入可见状态,不能交互的,在这里可以初始化一些 非严格必须的东西,比如可以在这里注册广播接收者等,当然也可以在 oncreat 注册,这个方法可以不重写

onResume()

用户可交互时调用,进入焦点状态,可以交互,在这里你能看到最终的效果 ,这个方法基本上也不会重写,除非你需要在这个状态的时候提示一些内容或者做一些其他的事情

onPause()

用户不可交互时调用,可见不可交互状态,代表有其他的窗口遮挡住这个 activity, 在这里,可以暂停动画等界面效果

onStop()

用户不可见时调用,不可见了,在这里,应该保存数据,停止一些消耗资源的事件,防止在不可见状态下被回收

onDestroy()

销毁时调用,销毁视图,在这里应该释放一切占用的资源,比如 停止播放,网络请求等所有操作,只是销毁视图,不是销毁 activity 对象,

activity 对象,能不能回收是垃圾回收决定,所以在这里要释放一切资源,防止无法被回收,导致内存泄露,最终内存溢出

3.启动与退出的循环:

Activity启动 onCreate() – onStart() – onResume()

Activity退出 onPause() – onStop() – onDestroy()

4.可见与不可见的循环:

Activity不可见,比如启动启动了下一个Activity onPause() – onStop()

Activity重新可见 从上一个界面返回到当前界面 onRestart() – onStart() – onResume()

5.焦点失去与获得的循环

Activity失去焦点 onPause()

Activity获得焦点 onResume()

6.onConfigurationChanged() 在AndroidManifest.xml中添加android:configChanges=”orientation|screenSize” (系统会监听这个属性的值,当发生与这些值相匹配的操作的时候,会执行对一个 activity 的onConfigurationChanged方法,并不会重新执行生命周期)不再去执行onCreate()方法,而是直接执行onConfigurationChanged()。如果不申明此段代码,按照Activity的生命周期,都会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作。所以如果改变屏幕方向这样的操作都去执行onCreate()方法,就有可能造成重复的初始化,降低程序效率是必然的了,而且更有可能因为重复的初始化而导致数据的丢失。这是需要千万避免的。

<activity android:name=".Main2Activity" android:configChanges="orientation|screenSize">
<intent-filter>
<action android:name="abc"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>


通常我们可以在个方法里面给控件重新设置宽高度;通过setContentView(R.layout.activity_main);可以给程序重新设置布局,但是你需要保存原始数据,重新在这里展示,这种方式 一般只操作与平板设备

7.如果不允许屏幕横屏或者竖屏时,可以在AndroidManifest.xml添加 android:screenOrientation=”landscape”表示锁定横屏,切换

不了竖屏 android:screenOrientation=”portrait”表示锁定竖屏,切换不了横屏

<activity android:name=".Main2Activity" android:screenOrientation="landscape" >//锁定横屏
<intent-filter>
<action android:name="abc"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

<activity android:name=".Main2Activity" android:screenOrientation="portrait" >//锁定竖屏
<intent-filter>
<action android:name="abc"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>


//待完善
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: