android launcher开发(9)Launcher的窗口周期
来源:互联网 发布:一元夺宝源码系统 编辑:程序博客网 时间:2024/04/29 05:19
应用程序activity的创建
Launcher作为一个activity,如果要界面的显示,必须依附在窗口之上,也就是说,在anctivity创建之前,窗口必须进行创建。
当启动一个activiy的时候,activity管理服务通过activity线程类的perfromLaunchActivity方法创建应用程序运行的必要条件,例如上下文,窗口
应用程序窗口的创建
final void attach(Context context, ActivityThread aThread, Instrumentation instr, IBinder token, int ident, Application application, Intent intent, ActivityInfo info, CharSequence title, Activity parent, String id, NonConfigurationInstances lastNonConfigurationInstances, Configuration config, String referrer, IVoiceInteractor voiceInteractor) {// 建立activity的上下文 attachBaseContext(context);//处理frgment mFragments.attachHost(null /*parent*/);// 创建一个窗口实例 mWindow = new PhoneWindow(this);// 设置回掉接口,当窗口发生状态变换,则会提示activity mWindow.setCallback(this); mWindow.setOnWindowDismissedCallback(this); mWindow.getLayoutInflater().setPrivateFactory(this); if (info.softInputMode != WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED) { mWindow.setSoftInputMode(info.softInputMode); } if (info.uiOptions != 0) { mWindow.setUiOptions(info.uiOptions); } mUiThread = Thread.currentThread(); mMainThread = aThread; mInstrumentation = instr; mToken = token; mIdent = ident; mApplication = application; mIntent = intent; mReferrer = referrer; mComponent = intent.getComponent(); mActivityInfo = info; mTitle = title; mParent = parent; mEmbeddedID = id; mLastNonConfigurationInstances = lastNonConfigurationInstances; if (voiceInteractor != null) { if (lastNonConfigurationInstances != null) { mVoiceInteractor = lastNonConfigurationInstances.voiceInteractor; } else { mVoiceInteractor = new VoiceInteractor(voiceInteractor, this, this, Looper.myLooper()); } }// 创建一个窗口管理器 mWindow.setWindowManager( (WindowManager)context.getSystemService(Context.WINDOW_SERVICE), mToken, mComponent.flattenToString(), (info.flags & ActivityInfo.FLAG_HARDWARE_ACCELERATED) != 0); if (mParent != null) { mWindow.setContainer(mParent.getWindow()); } mWindowManager = mWindow.getWindowManager(); mCurrentConfig = config; }
窗口中设置ui
在完成窗口创建以及activity的初始化之后,下一步进行的是往窗口中填充ui布局。
在activity中,我们采用setcontentView的方法进行设置。
在调用之前,我们需要判断窗口的根视图是否存在,如果不存在,则调用installAecor方法。
该方法进行应用程序窗口最初形态的设置。
0 0
- android launcher开发(9)Launcher的窗口周期
- android launcher开发(5) Launcher的显示
- Android Launcher--简易Launcher开发
- Android Launcher -- 简易Launcher开发
- Android Launcher--简易Launcher开发
- Android Launcher--简易Launcher开发
- Android Launcher--简易Launcher开发
- android launcher开发(1)
- Android launcher - Launcher(一)
- android launcher开发(4) Home键与launcher
- android launcher开发(6) Launcher暂停,停止,销毁
- Android Launcher开发学习--简易Launcher开发
- Android launcher 开发笔记(二) launcher中常用的类
- Android Launcher开发
- android开发launcher
- android 机顶盒Launcher开发
- Android launcher开发介绍
- Android Launcher开发
- error C2375: “WSACleanup”: 重定义;不同的链接 等
- 无限循环滑动的viewpager(带轮播功能)
- java.lang.Runtime
- python3.5安装模块
- spring+struts2+hibernate整合
- android launcher开发(9)Launcher的窗口周期
- android 事件分发验证
- iOS各种证书的了解
- 大数据时代:传统BI还能走多远?
- 毕业了,我的大学
- 基于内容的图像检索
- 利用aliyun OSS挂载文件服务器或session共享
- 网站优化
- HiverServer严格模式配置