Handler使用方法
来源:互联网 发布:js format函数空格 编辑:程序博客网 时间:2024/06/06 05:15
概述
本文讨论Handler的一些使用方法。
在Java线程一文简单介绍了线程的使用方法。这是本文讨论的基础。
示例
background执行一个计算任务,然后需要UI上能够显示计算进展。
代码中,Start之后,执行这个background任务。background任务会把计算进展情况通过Message知会给UI。——通信机制就是借助Handler对象。
布局文件 my_layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/start" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/the_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/progress" /> <TextView android:id="@+id/progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hint" /> </LinearLayout></LinearLayout>
字符串资源
<string name="start">Start</string><string name="progress">progress:</string><string name="hint">the current progress</string>
代码
下面省略掉自动生成的一些代码。
public class MainActivity extends Activity { protected static final String TAG = "MainActivity"; private Button start = null; private TextView progress = null; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { int count = msg.what; progress.setText("" + count); } }; private Runnable adding = new Runnable() { @Override public void run() { double d; for (int count = 1; count <= 1000; count++) { for (int i = 0; i < 1000; i++) { d = Math.sqrt(Math.sqrt(i)); Log.d(TAG, "count = " + count + ", sqrt(sqrt(" + i + "))=" + d); } if (count % 10 == 0) { handler.sendEmptyMessage(count / 100); } } } }; private void calculate() { Thread thread = new Thread(null, adding, "adding"); thread.start(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_layout); start = (Button) findViewById(R.id.start); progress = (TextView) findViewById(R.id.progress); start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { calculate(); } }); }
要点
如下几点:
- 背景任务的线程:handler.sendEmptyMessage(int what);
- Handle重载:public void handleMessage(Message msg)
0 0
- Handler使用方法
- Handler 使用方法
- Handler使用方法
- Handler使用方法
- Handler使用方法
- HandlerThread,Handler,Thread使用方法
- HandlerThread,Handler,Thread使用方法
- Handler的基本使用方法
- HandlerThread,Handler,Thread使用方法
- 学习-Handler的使用方法
- HandlerThread,Handler,Thread使用方法
- HandlerThread,Handler,Thread使用方法
- Android Handler的使用方法
- HandlerThread,Handler,Thread使用方法
- 安卓 Handler使用方法
- android handler理解+使用方法
- HandlerThread,Handler,Thread使用方法
- HandlerThread,Handler,Thread使用方法
- Sys内核驱动签名指南
- 精简版android事件分发解释
- 算法的一些读后感
- sqlserver和oracel的使用心得记录(语句技巧和错误解决)
- mysql查询表和 视图信息
- Handler使用方法
- 图解Visual Studio 2010中的UML建模功能
- springmvc返回jsp界面时出现406错误
- FineReport报表
- Android 如何定义全局变量 以及 static静态变量使用误区 的问题
- hibernate 多对一(Many-to-one)单向关联
- java获得项目绝对路径
- java.lang.IllegalStateException: attempt to re-open an already-closed object
- UML工具Astah的使用