WEB开发网
开发学院手机开发Android 开发 android 进程的优先级 阅读

android 进程的优先级

 2013-10-06 14:13:31 来源:WEB开发网   
核心提示:public static final int FLAG_DOWNLOAD=1;public static final int FLAG_UPDATE=2;2、msg是work thread线程发送过来的消息对象,该线程代码在步骤1中列出,android 进程的优先级(6),3、若msg.what的值是CommonUt
public static final int FLAG_DOWNLOAD=1;
public static final int FLAG_UPDATE=2;
2、msg是work thread线程发送过来的消息对象,该线程代码在步骤1中列出。
3、若msg.what的值是CommonUtils.FLAG_DOWNLOAD,则在标签中显示:下载结束。
若msg.what的值是CommonUtils.FLAG_UPDATE ,则在标签中显示:更新结束。
12.4. 发送Runnalbe对象-更新UI
12.4.1.概述
1、Runnable接口
该接口的源代码如下所示:
public interface Runnable {
public void run();
}
Java规定:一个线程要实现Runnable中的run方法。Android的线程也同样如此。在new 一个Thread时,查看Android源代码,将发现内部代码也是要创建一个Runnable的对象,并实现run方法。
2、Handler.post()方法
Handler类中有一个方法:post(Runnable r);
作用:将Runnable对象作为参数发送至消息对列中,以下是post方法的源代码:
public final boolean post(Runnable r)
{
return sendMessageDelayed(getPostMessage(r), 0);
}
由上代码可知,Runnable对象r被当作消息的第一个参数发送至消息队列,然后由Looper交给主线程处理,如图-5所示。
根据以上原理,Runnable.run中的代码可以在主线程中运行,那么在Runnable.run方法中可以编写更新主线程UI的代码。
12.4.2.示例
在按钮单击事件方法中创建一个工作线程,在该线程中先模拟下载操作,操作结束后,向主线程发送了一个实现Runnable的内部匿名类,代码如下所示:
public void onClick(View v) {
switch(v.getId()){
case R.id.btnDownload:
//创建Handler对象
final Handler handler=new Handler();
//new一个工作线程模拟下载操作
new Thread(){
public void run() {
CommonUtils.timeConsuming(5);//模拟下载操作
/*下载结束后,
*将Runable的内部匿名类的代码
*当作消息中的第一个参数发送至消息对列,
* 再由Looper交给主线程执行*/
handler.post(new Runnable() {
@Override
public void run() {
mTextView.setText("download finished");
}
});
};
}.start();//启动工作线程
break;
case R.id.btnUpdate:
break;
}
}
12.5.runOnUiThread()发送Runnable对象
12.5.1.概述
Activity类中提供了一个runOnUiThread方法,该方法封装了Handler.post方法,因此作用与Handler.post相同。
12.5.2.示例
用runOnUiThread方法发送Runnable对象,让主线程执行该对象中的run方法。示例代码如下:
//new一个工作线程
new Thread(){
public void run() {
CommonUtils.timeConsuming(8); //模拟更新操作
//创建一个Runnable接口的实例
Runnable action=new Runnable() {
//实现run方法,在该方法中可修改UI
@Override
public void run() {
mTextView.setText("update finished");
}
};
//将action对象发送至消息对列,交由主线程执行run方法中的代码
runOnUiThread(action);
};
}.start();//启动线程
12.6. View.post()发送Runnable对象-更新UI
12.6.1.概述
View类中也提供了发送Runnable对象至消息对列,然后由Looper交给主线程的方法:
1、Post(Runnable r);
2、postDelayed(Runnable r,long delayMillis);

上一页  1 2 3 4 5 6 7 8  下一页

Tags:android 进程 优先级

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