Handler, AsyncTask用法简单示例
2024-09-06 13:19:09
package com.jim.testapp; import android.app.Activity;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button; class MyHandler extends Handler
{
private Activity mActivity;
private Button btn;
public MyHandler(Activity activity) {
mActivity = activity;
btn = (Button)activity.findViewById(R.id.button);
} @Override
public void handleMessage(Message msg) {
Integer integer = (Integer) msg.obj;
switch (msg.what) {
case MainActivity.MSG_ONE:
btn.setText(integer.toString());
break;
}
}
} class MyAsyncTask extends AsyncTask<String, Integer, Integer> { private MainActivity mActivity;
private Button btn; public MyAsyncTask(MainActivity activity) {
mActivity = activity;
btn = (Button)activity.findViewById(R.id.button);
} @Override
protected void onPreExecute() {
super.onPreExecute();
btn.setText("Loading start");
} @Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
btn.setText("Loading finished");
Log.i(MainActivity.TAG, "Result is " + integer);
} @Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
btn.setText("Loading " + values[0] + "%");
} @Override
protected Integer doInBackground(String... params) {
Log.i(MainActivity.TAG, params[0]);
for (int i = 1; i <= 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
publishProgress(i*10);
}
return 0;
}
} public class MainActivity extends AppCompatActivity { public static final String TAG = "jimtest";
public static final int MSG_ONE = 1;
public static final int MSG_TWO = 2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //MyAsyncTask task = new MyAsyncTask(this);
//task.execute("i am the param"); final MyHandler h = new MyHandler(this); Runnable r = new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
h.obtainMessage(MSG_ONE, new Integer(i)).sendToTarget();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
} }
}; new Thread(r).start(); }
}
最新文章
- BOM对象有哪些:
- 在 MAC OS X 安装 ADB (Android调试桥)
- 关于webrtc视频会议的解决方案
- 【Java每日一题】20161109
- quartz.net 项目无法加载的问题
- Linux下安装Firefox以及更新Adobe flash
- php yii多表查询
- 自制单片机之十二……AT89C2051烧写器的制做与调试
- 记录android开发博客
- Android_CodeWiki_02
- android看不见main函数怎么办?程序异常了,能够不提示“xxx软件停止执行”吗?
- c# HttpWebRequest 模拟HTTP post 传递JSON参数
- ValueError: &#39;format&#39; in __slots__ conflicts with class variable
- Oracle触发bug(cursor: mutex S),造成数据库服务器CPU接近100%
- pytorch visdom可视化工具学习—1—详细使用-1—基本使用函数
- HDFS集群优化篇
- [LeetCode]题53:Maximum Subarray
- java之try、catch、finally
- OpenCV设置保存图像压缩率
- Mybatis Blob和String互转,实现文件上传等。