Android—Activity 布满荆棘的人生 2022-04-13 07:22 254阅读 0赞 **Activity异常退出了怎么办(怎么保存数据)?** 1、重写onSaveInstanceState和onRestoreInstanceState 两个方法 2、在onSaveInstanceState 用Bundle参数putString 3、在onRestoreInstanceState 用Bundle参数getString OK **Activity是如何显示视图的(源码|亮点)?** 1、每一个Activity都有一个Phone Window对象, 2、Phone Window中mContentParent为空的时候,如果为空说明我们还没有DecorView,然后调用installDecor,之后我们的DecorView就准备好了 3、DecorView就准备好了mContentParent就指向了我们的ContentView,由于是新建的,我们的mContentParent中肯定没有子View,如果不是新建的,我们要先把mContentParent中的子View全部清干净。 4、接下来通过反射加载到我们传入的布局,接着下面会通过调用getCallBack得到一个CallBack对象cb,其实这个cb就是我们的Activity。 5、接着会调用Activity的onContentChanged方法,这个方法是一个空实现,然而View已经悄然显示了。 **Activity的回退栈(或启动模式或launchMode)?** 1、Standard 标准模式,没什么好说的每个Activity都进栈先进后出,是我们默认的模式。 2、SingleTop 栈顶复用模式,须要创建的Activity已经处于栈顶时,此时会直接复用栈顶的Activity,我们\{占位符\}项目中的APP内支付页面是使用的SingleTop,就怕支付页面会因为用户快速连点出现多个支付页的问题,我们\{占位符\}页面朋友圈也是使用的栈顶复用模式|我们\{占位符\}页面搜索也是使用的栈顶复用模式。 3、SingleTask 栈内复用模式,若须要创建的Activity已经处于栈中时,此时不会创建新的Activity,而是将存在栈中的Activity上面的其他Activity所有销毁,使它成为栈顶。我们\{占位符\}项目返回首页就是用的这种方式,不但省力还省内存。我们\{占位符\}页面大转盘也是使用SingleTask。 4、SingleInstance 单栈模式,会创建一个新的任务栈并且站内只有一个Activity并不常用,如果我们把一个Activity设置为singleInstance模式,你会发现它启动时会慢一些,切换效果不好,影响用户体验。它往往用于多个应用之间,例如一个电视launcher里的Activity,通过遥控器某个键在任何情况可以启动,这个Activity就可以设置为singleInstance模式,当在某应用中按键启动这个Activity,处理完后按返回键,就会回到之前启动它的应用,不影响用户体验。 **你们\{项目中\}是如何管理Activity的(如何安全退出指定的Activity或如何退出所有Activity|小细节|小亮点)?** 1、创建一个ActivityManager管理类,搞一个ArrayList 2、给每个Activity添加一个TAG 3、填加删除都通过ActivityManager里的ArrayList就OK了
还没有评论,来说两句吧...