当前位置: 编程技术>移动开发
本页文章导读:
▪EXT window反复布局 EXT window重复布局
//下面是window里面放一个form然后在form里面有一个按钮,可以点击按钮动态生成文本框.{ xtype : 'button', text : '添加规则', handler : function() { var k = me.activityRuleField.........
▪ ActivityThread-activity起动分析 ActivityThread-activity启动分析
1. 入口。以前一直都说Activity的人口是onCreate方法。其实android上一个应用的入口,应该是ActivityThread。和普通的java类一样,入口是一个main方法。public static final vo.........
▪ 华为神机c8600升级adroid2.3.7 三月前三月后小弟我都有ROM 华为神机c8600升级adroid2.3.7 三月前三月后我都有ROM
在网上趁晚上下班有空,查找该手机相关ROM,在网上下载了很多ROM,但有些刷不起,那是因为没有用C8600中文Recovery版本4.0.1.4刷机程序 .........
[1]EXT window反复布局
来源: 互联网 发布时间: 2014-02-18
EXT window重复布局
//下面是window里面放一个form然后在form里面有一个按钮,可以点击按钮动态生成文本框.
{
xtype : 'button',
text : '添加规则',
handler : function() {
var k = me.activityRuleField++;//拿到数组长度,在其基础上生成文本框
for (var i = 0; i < me.activityRuleField; i++) {
var _textfield = {
xtype : 'textfield',
anchor : '48%',
fieldLabel : '活动规则' + (k + 1),
name : 'activityRule' + (k + 1)
};
};
me.activityForm.add(_textfield);//添加到form里面
me.activityForm.doLayout();//重新布局
}
}
[2] ActivityThread-activity起动分析
来源: 互联网 发布时间: 2014-02-18
ActivityThread-activity启动分析
1. 入口。
以前一直都说Activity的人口是onCreate方法。其实android上一个应用的入口,应该是ActivityThread。和普通的java类一样,入口是一个main方法。
public static final void main(String[] args) {
SamplingProfilerIntegration.start();
……
Looper.prepareMainLooper();
if (sMainThreadHandler == null) {
sMainThreadHandler = new Handler();
}
ActivityThread thread = new ActivityThread();
thread.attach(false);
……
Looper.loop();
……
thread.detach();
……
Slog.i(TAG, "Main thread of " + name + " is now exiting");
}
下面仔细分析一下这个main方法。
2.Looper.prepareMainLooper();
ActivityThread其实就是我们经常说的UI thread,也就是主线程。我们都知道主线程可以使用Handler进行异步通信,因为主线程中已经创建了Looper,而这个Looper就是在这里创建的。如果其他线程需要使用Handler通信,就要自己去创建Looper。
3. sMainThreadHandler = new Handler();
创建一个Handler。
4. ActivityThread thread = new ActivityThread();
创建ActivityThread 对象。
ActivityThread 有几个比较重要的成员变量,会在创建ActivityThread对象时初始化。
(1)final ApplicationThread mAppThread = new ApplicationThread();
ApplicationThread继承自ApplicationThreadNative, 而ApplicationThreadNative又继承自Binder并实现了IApplicationThread接口。IApplicationThread继承自IInterface。这是一个很明显的binder结构,用于于Ams通信。IApplicationThread接口定义了对一个程序(linux的进程)操作的接口。ApplicationThread通过binder与Ams通信,并将Ams的调用,通过下面的H类(也就是Hnalder)将消息发送到消息队列,然后进行相应的操作,入activity的start, stop。
(2)final H mH = new H();
private final class H extends Handler
mH负责处理ApplicationThread发送到消息队列的消息,例如:
public void handleMessage(Message msg) {
if (DEBUG_MESSAGES) Slog.v(TAG, ">>> handling: " + msg.what);
switch (msg.what) {
case LAUNCH_ACTIVITY: {
ActivityClientRecord r = (ActivityClientRecord)msg.obj;
r.packageInfo = getPackageInfoNoCheck(
r.activityInfo.applicationInfo);
handleLaunchActivity(r, null);
} break;
5. handleLaunchActivity(r, null);
从名字中就可以看出,这里就将进行启动activity的工作了。
方法中主要调用了这一句:
Activity a = performLaunchActivity(r, customIntent);
6. performLaunchActivity()
进行了一些初始化和赋值操作后,创建activity。
activity = mInstrumentation.newActivity(
cl, component.getClassName(), r.intent);
然后调用:
mInstrumentation.callActivityOnCreate(activity, r.state);
这一句就会调用到acitivity的onCreate方法了,就进入了大多数应用开发的入口了。
1. 入口。
以前一直都说Activity的人口是onCreate方法。其实android上一个应用的入口,应该是ActivityThread。和普通的java类一样,入口是一个main方法。
public static final void main(String[] args) {
SamplingProfilerIntegration.start();
……
Looper.prepareMainLooper();
if (sMainThreadHandler == null) {
sMainThreadHandler = new Handler();
}
ActivityThread thread = new ActivityThread();
thread.attach(false);
……
Looper.loop();
……
thread.detach();
……
Slog.i(TAG, "Main thread of " + name + " is now exiting");
}
下面仔细分析一下这个main方法。
2.Looper.prepareMainLooper();
ActivityThread其实就是我们经常说的UI thread,也就是主线程。我们都知道主线程可以使用Handler进行异步通信,因为主线程中已经创建了Looper,而这个Looper就是在这里创建的。如果其他线程需要使用Handler通信,就要自己去创建Looper。
3. sMainThreadHandler = new Handler();
创建一个Handler。
4. ActivityThread thread = new ActivityThread();
创建ActivityThread 对象。
ActivityThread 有几个比较重要的成员变量,会在创建ActivityThread对象时初始化。
(1)final ApplicationThread mAppThread = new ApplicationThread();
ApplicationThread继承自ApplicationThreadNative, 而ApplicationThreadNative又继承自Binder并实现了IApplicationThread接口。IApplicationThread继承自IInterface。这是一个很明显的binder结构,用于于Ams通信。IApplicationThread接口定义了对一个程序(linux的进程)操作的接口。ApplicationThread通过binder与Ams通信,并将Ams的调用,通过下面的H类(也就是Hnalder)将消息发送到消息队列,然后进行相应的操作,入activity的start, stop。
(2)final H mH = new H();
private final class H extends Handler
mH负责处理ApplicationThread发送到消息队列的消息,例如:
public void handleMessage(Message msg) {
if (DEBUG_MESSAGES) Slog.v(TAG, ">>> handling: " + msg.what);
switch (msg.what) {
case LAUNCH_ACTIVITY: {
ActivityClientRecord r = (ActivityClientRecord)msg.obj;
r.packageInfo = getPackageInfoNoCheck(
r.activityInfo.applicationInfo);
handleLaunchActivity(r, null);
} break;
5. handleLaunchActivity(r, null);
从名字中就可以看出,这里就将进行启动activity的工作了。
方法中主要调用了这一句:
Activity a = performLaunchActivity(r, customIntent);
6. performLaunchActivity()
进行了一些初始化和赋值操作后,创建activity。
activity = mInstrumentation.newActivity(
cl, component.getClassName(), r.intent);
然后调用:
mInstrumentation.callActivityOnCreate(activity, r.state);
这一句就会调用到acitivity的onCreate方法了,就进入了大多数应用开发的入口了。
[3] 华为神机c8600升级adroid2.3.7 三月前三月后小弟我都有ROM
来源: 互联网 发布时间: 2014-02-18
华为神机c8600升级adroid2.3.7 三月前三月后我都有ROM
在网上趁晚上下班有空,查找该手机相关ROM,在网上下载了很多ROM,但有些刷不起,那是因为没有用
C8600中文Recovery版本4.0.1.4刷机程序 ,没升级Recovery
我手上有C8600中文Recovery版本4.0.1.4刷机程序,ROM2.3.7
有点大,需要用的朋友可以联系我QQ:908925859
也可以google.com.tw上去查找
也可以在
http://bbs.189store.com/thread-14866-1-1.html 下载Recovery4.0.1.4
http://www.rom.sx/index.html 下载ROM
在网上趁晚上下班有空,查找该手机相关ROM,在网上下载了很多ROM,但有些刷不起,那是因为没有用
C8600中文Recovery版本4.0.1.4刷机程序 ,没升级Recovery
我手上有C8600中文Recovery版本4.0.1.4刷机程序,ROM2.3.7
有点大,需要用的朋友可以联系我QQ:908925859
也可以google.com.tw上去查找
也可以在
http://bbs.189store.com/thread-14866-1-1.html 下载Recovery4.0.1.4
http://www.rom.sx/index.html 下载ROM
最新技术文章: