WEB开发网
开发学院手机开发Android 开发 Android Activity设计框架 阅读

Android Activity设计框架

 2010-09-10 00:25:00 来源:WEB开发网   
核心提示:Activity状态变化时,将通过该联系找到客服端的Activity,Android Activity设计框架(2),从而将消息或者动作传递应用程序面对的接口:xxxActivity,3.3 Actvity的Launch过程1)发起请求startActivity(intent)2)Activity Service Ma
Activity状态变化时,将通过该联系找到客服端的Activity,从而将消息或者动作传递应用程序面对的接口:xxxActivity。

3.3 Actvity的Launch过程

1)发起请求startActivity(intent)

2)Activity Service Manager接收到请求执行StartActivity函数。

建立:HistoryRecord实例r.

将r 加入到mHistory顶。

(3)通过app.thread.scheduleLaunchActvity( app,r)@ActivityThread.java

(4)在App应用中建立新的ActivityRecord。

(5)建立新的Activity对象并放入到ActivityRecord中。

(6)将ActivityRecord加入到mActivites@ActivityThread

(7)发起Activity.onCreate(..),,该onCreate就是在你的应用程序XXXActivity中的onCreate。

image_thumb10

3.4 Activity的Resume

(1)Activity什么时候被Resume

image_thumb13

(2)Rusume的过程

通过该过程的研究我们会进一步的了解到AMS与应用进程的交互过程。

在AMS端,满足resume条件都会调用:Resume的核心函数:resumeTopActivityLocked@ActivityManagerService

XXX当前栈顶的HistroyRecord

1)窗口切换:隐藏前一个Activity的窗口,

2)更新LRUList,(LRUList是淘汰应用程序的依据之一)

3) XXX.app.thread.scheduleResumeActivity(XXX,

isNextTransitionForward());

4)completeResumeLocked

setFocusedActivityLocked

mFocusActivity=xxx //此时焦点Actvitiy切换了。

WM.setFocusedApp(xxx,

mWindowManager.executeAppTransition();

mNoAnimActivities.clear();

在应用程序端:

(5)scheduleResumeActivity

handleResumeActivity(IBinder token, boolean clearHide, boolean isForward) {

ActivityRecord r = performResumeActivity(token, clearHide);

ActivityRecord r = mActivities.get(token);

r.activity.performResume()

performResume

整个Resume的过程如下:

image_thumb16

上一页  1 2 

Tags:Android Activity 设计

编辑录入:coldstar [复制链接] [打 印]
赞助商链接