打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android-有关线程的处理
AndroidAndroid developmentAndroid 开发Android-HandlerhandleMessagemessagethreadtutor安卓
android有两种方式处理线程:
比较耗时的操作放在后台服务,通过通知机制通知用户使用的活动(activity);
在后台线程中处理耗时的操作
使用Handler
创建后台线程最友好的办法是创建一个Handler子类的实例。只需一个Handler对应一个Activity。自定义的后台线程可与Handler通信,Handler将与UI线程一起工作。
和Handler通信,需要两个选项,message和runnable对象。
Message
发送Message到Handler,第一步调用obtainMessage(),从池中得到Message对象。
然后,可通过消息队列将Message发送给Handler,通过sendMessage…()方法族:
sendMessage() 立即发送Message到消息队列
sendMessageAtFrontOfQueue() 立即发送Message到队列,而且是放在队列的最前面
sendMessageAtTime() 设置时间,发送Message到队列
sendMessageDelayed() 在延时若干毫秒后,发送Message到队列
为了处理Message,Handler需要实现handleMessage(),当Message出现在队列中时,会调用handleMessage()方法。另外,Handler可在需要时更新UI。
以下示例演示一个进度条,每隔1秒钟增加1/20个单位。
布局文件:
12345678<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ProgressBar android:id="@+id/progress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" /></LinearLayout>
java代码:
package com.easymorse.thread;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.ProgressBar;public class ShowThread extends Activity { ProgressBar bar; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { bar.incrementProgressBy(5); } }; boolean isRunning = false; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bar = (ProgressBar) findViewById(R.id.progress); } @Override protected void onStart() { super.onStart(); bar.setProgress(0); Thread background = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 20 && isRunning; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { } handler.sendMessage(handler.obtainMessage()); } } }); isRunning = true; background.start(); } @Override protected void onStop() { super.onStop(); isRunning = false; }}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android中ProgressBar的使用-通过Handler与Message实现进度条显示
Android Handler详解
深入了解Android中的AsyncTask
Android多线程
Android Handler与Looper
Android学习笔记(三一):线程:Message和Runnable
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服