重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz

Android 应用层

查看数: 5598 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-12-22 15:14

正文摘要:

本帖最后由 谭见文-15电气 于 2017-12-28 21:57 编辑 一、Activity的生命周期 ①Activity正在被创建。 Activity创建的时候,调用代码完成界面布局; @Override protected void onCreate(Bundle savedInstan ...

回复

谭见文-15电气 发表于 2017-12-22 15:48:38
本帖最后由 谭见文-15电气 于 2017-12-28 21:58 编辑

二、Activity的系统回收
1  系统资源紧张

应用打开过多,导致系统的可用内存很少。
在回收资源的时候,系统会根据这些资源所在的进程优先级来判断。进程优先级高的,最后回收;进程优先级低的,最先回收。
前台优先级-IMPORTANCE_FOREGROUND
可见优先级-IMPORTANCE_VISIBLE
服务优先级-IMPORTANCE_SERVICE
后台优先级-IMPORTANCE_BACKGROUND
空优先级-IMPORTANCE_EMPTY


Activity被回收,会重新用它onCreate()创建出来,用户输入的一大段东西可能会清除;
Android提供了onSaveInstanceState()回调函数来保持数据;
2  屏幕旋转
如果一个Activity从创建出来,到显示,然后旋转,那么它将经历:
onCreate()->
onStart()->
onResume()->
用户可以与Activity交互,此时屏幕进行旋转,从竖屏变横屏->
onPause()->
onSaveInstanceState()->
onStop()->
onDestroy()->
onCreate()->
onStart()->
onRestoreInstanceState()->
onResume()->
用户可以与Activity交互;

同样Activity被create两次,数据被清除的问题,这里有两种方法;
onSaveInstanceState()和onRestoreInstanceState()可用用来保存和还原这些数据;
在AndroidManifest.xml文件中,给这个Activity组件加上android:screenOrientation="orientation|screenSize"的属性就可以了;

经历的过程:
这种Activity从创建出来,到显示,然后旋转,那么它将经历:
onCreate()->
onStart()->
onResume()->
用户可以与Activity交互,此时屏幕进行旋转,从竖屏变横屏->
onConfigurationChanged();
在被触发的onConfigurationChanged()函数中,可以感知到屏幕的变化,

如此一来,这个Activity在旋转时就不会重走销毁、创建的过程了,而只是在旋转后经历一个onConfigurationChanged()。
这种情况下,即使它存在横屏布局文件,这个横屏布局也不会被使用到,因为onCreate()并没有被调用到,也就不会调用setContentView)了。












Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-12-22 10:46 , Processed in 0.162873 second(s), 32 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表