android 的Handler处理UI主线程外的耗时操作
2013-04-15 14:26
483 查看
package com.example.handlerdemowjj;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
// 另外的线程
private static final int MSG_SUCCESS = 0;// 获取成功的标识
private static final int MSG_FAILURE = 1;// 获取失败的标识
private Thread mThread;
TextView tv;
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {// 此方法在ui线程运行
switch (msg.what) {
case MSG_SUCCESS:
Log.v("logcat", "MSG_SUCCESS" + Thread.currentThread());
Log.v("logcat", "MSG_SUCCESS_ID:"
+ Thread.currentThread().getId() + ",name="
+ Thread.currentThread().getName());
Toast.makeText(getApplication(), "成功", Toast.LENGTH_LONG)
.show();
tv.setText("new.成功");
break;
case MSG_FAILURE:
Log.v("logcat", "MSG_FAILURE" + Thread.currentThread());
Toast.makeText(getApplication(), "失败", Toast.LENGTH_LONG)
.show();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
Runnable runnable = new Runnable() {
@Override
public void run() {
//这是新的线程,可在这儿处理耗时的操作,更新不了UI界面的操作的
Log.v("logcat",
"new-Thread.currentThread()=" + Thread.currentThread());
Log.v("logcat", "new-Thread.currentThread().getId()="
+ Thread.currentThread().getId() + ",name="
+ Thread.currentThread().getName());
int i = 0;
if (i == 0) {
mHandler.obtainMessage(MSG_SUCCESS).sendToTarget();// 获取成功
} else {
mHandler.obtainMessage(MSG_FAILURE).sendToTarget();// 获取失败
}
}
};
if (mThread == null) {
Toast.makeText(getBaseContext(), "mThread == null",
Toast.LENGTH_LONG).show();
mThread = new Thread(runnable);
mThread.start();// 线程启动
} else {
Toast.makeText(getBaseContext(), "thread_started",
Toast.LENGTH_LONG).show();
}
}
}
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
// 另外的线程
private static final int MSG_SUCCESS = 0;// 获取成功的标识
private static final int MSG_FAILURE = 1;// 获取失败的标识
private Thread mThread;
TextView tv;
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {// 此方法在ui线程运行
switch (msg.what) {
case MSG_SUCCESS:
Log.v("logcat", "MSG_SUCCESS" + Thread.currentThread());
Log.v("logcat", "MSG_SUCCESS_ID:"
+ Thread.currentThread().getId() + ",name="
+ Thread.currentThread().getName());
Toast.makeText(getApplication(), "成功", Toast.LENGTH_LONG)
.show();
tv.setText("new.成功");
break;
case MSG_FAILURE:
Log.v("logcat", "MSG_FAILURE" + Thread.currentThread());
Toast.makeText(getApplication(), "失败", Toast.LENGTH_LONG)
.show();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
Runnable runnable = new Runnable() {
@Override
public void run() {
//这是新的线程,可在这儿处理耗时的操作,更新不了UI界面的操作的
Log.v("logcat",
"new-Thread.currentThread()=" + Thread.currentThread());
Log.v("logcat", "new-Thread.currentThread().getId()="
+ Thread.currentThread().getId() + ",name="
+ Thread.currentThread().getName());
int i = 0;
if (i == 0) {
mHandler.obtainMessage(MSG_SUCCESS).sendToTarget();// 获取成功
} else {
mHandler.obtainMessage(MSG_FAILURE).sendToTarget();// 获取失败
}
}
};
if (mThread == null) {
Toast.makeText(getBaseContext(), "mThread == null",
Toast.LENGTH_LONG).show();
mThread = new Thread(runnable);
mThread.start();// 线程启动
} else {
Toast.makeText(getBaseContext(), "thread_started",
Toast.LENGTH_LONG).show();
}
}
}
相关文章推荐
- Handler和Thread-----处理耗时比较长的操作
- Android开发(22)--seekBar采用handler消息处理操作
- android异步任务处理(网络等耗时操作)
- Android中AsyncTask的处理后台耗时操作(如list排序,进度加载)
- android开发 用线程进行耗时操作,统一处理 第二版
- android handler 里面引用context有耗时操作是的正确打开方式
- Android中如何处理耗时操作,AsyncTask有什么不足之处.
- android开发 用线程进行耗时操作,统一处理
- Android 中 Handler 引起的内存泄露 在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。其实这可能导致内存泄露,代码中哪里可能导致内存泄露,又是如何
- 【Android】Handler使用入门 处理耗时较长的程序
- Android开发(22)--seekBar采用handler消息处理操作
- Android中AsyncTask的处理后台耗时操作(如list排序,进度加载)
- ProcessDialog结合Thread处理耗时操作(Handler和Thread)
- Android多线程,让耗时的操作去后台,handler传递对象图片下载
- Android中处理耗时操作的方法有哪些?
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- 解析Android消息处理机制:Handler/Thread/Looper & MessageQueue
- Android 开发之多线程处理、Handler 详解
- Android应用开发学习笔记之多线程与Handler消息处理机制