当前位置:首页 > 安卓开发个人笔记
(1)有3个Acitivity,分别用One,Two(透明的),Three表示,One是应用启动时的主Activity
启动第一个界面Activity One时,它的次序是
onCreate (ONE) - onStart (ONE) - onResume(ONE) 点\打开透明Activity\按钮时,这时走的次序是
onPause(ONE) - onCreate(TWO) - onStart(TWO) - onResume(TWO)
再点back回到第一个界面,Two会被杀这时走的次序是
onPause(TWO) - onActivityResult(ONE) - onResume(ONE) - onStop(TWO) - onDestroy(TWO)
点\打开全屏Activity\按钮时,这时走的次序是
onPause(ONE) - onCreate(Three) - onStart(Three) - onResume(Three) - onStop(ONE)
再点back回到第一个界面,Three会被杀这时走的次序是
onPause(Three) - onActivityResult(ONE) - onRestart(ONE) - onStart(ONE)- onResume(ONE) - onStop(Three) - onDestroy(Three) 再点back退出应用时,它的次序是
onPause(ONE) - onStop(ONE) - onDestroy(ONE)
(2)设置Activity的android:configChanges=\时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
(3)Activity运行时按下HOME键(跟被完全覆盖是一样的):onSaveInstanceState --> onPause --> onStop,再次进入激活状态时: onRestart -->onStart--->onResume
(4)1>以调用Context.startService()启动,而以调用Context.stopService()结束 2>以调用Context.bindService()方法建立,以调用Context.unbindService()关闭
1.空指针:对象没有初始化就使用了
2.空函数:有事件源但对应的事件对象 3死循环:没有合理的循环控制流
4.内存泄露:同一个对象不停地开辟,而且没有释放。 5.内存溢出:程序所消耗的内存大于硬件提供的内存。
6.网络:异步加载时提前调用了数据(现象是在弱网时,根源是空指针) 7.界面UI:像拍照没有附加于ControlView- U( }/ r- S! d: h& q& h3 e\
8.主线程:需要主线程执行的,放于子线程里执行了。比如:网络电话--网络电话是用C语言写的,在高级语音中要调用中,需要加线程转换。\
android提供了一套专门用于异步处理的类。即:AynsTask类。使用这个类可以为耗时程序开辟一个新线程进行处理,处理完时返回。
其实,AsynTask类就是对Thread类的一个封装,并且加入了一些新的方法。编程时,两者
都可以实现同样的功能。本文后面将对AsynTask和Thread进行比较。 1、AsynTask类结构
asysTask类主要用到的几个内部回调函数有: doInBackGround()
onPreExecute() onPostExecute() onProgressUpdate() 复制代码
正是这几个回调函数构成了AsynTask类的使用逻辑结构。 注意:每个AsynTask子类必须至少复写doInBackGround()方法。 2、回调逻辑关系 调用关系如下图:
1>主线程调用AsynTask子类实例的execute()方法后,首先会调用onPreExecute()方法。onPreExecute()在主线程中运行,可以用来写一些开始提示代码。 2>之后启动新线程,调用doInBackground()方法,进行异步数据处理。
3>处理完毕之后异步线程结束,在主线程中调用onPostExecute()方法。onPostExecute()可以进行一些结束提示处理。
补充:在doInBackground()方法异步处理的时候,如果希望通知主线程一些数据(如:处理进度)。这时,可以调用publishProgress()方法。这时,主线程会调用AsynTask子类的onProgressUpdate()方法进行处理。 3、各个函数间数据的传递
共分享92篇相关文档