您的位置:首页 > 产品设计 > UI/UE

Android 子线程 更新 UI 界面 总结

2015-05-21 17:15 302 查看
package com.jrhcode.morethreadtest;

import java.util.concurrent.Executors;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

/**
*
* 主要功能是:在子线程中来更改TextView的显示内容
*
* android 多线程编程
   1:通过handler 在新启动的线程中更新UI组件 Handler.post(new Runnable());
2:handler.postdelayed(new Runnable, delay);
   3: Activity.runOnUiThread();
4:AsyncTask
5:线程池
*
* @author Administrator
*
*/
public class MainActivity extends Activity {

TextView tv;
private Handler mHandler;
private String TAG = MainActivity.class.getSimpleName();
int i = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
mHandler = new Handler();
// initHandler();
// initHandler2();
// initHandler3();
// updateTv();
// updateTVV();
threedPool();
}

private void threedPool() {
// TODO Auto-generated method stub
Executors.newSingleThreadExecutor().submit(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName());
tv.setText(TAG);
mHandler.post(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
tv.setText("this is handler post");
}
});
}
});

}

/**
*
*/
private void updateTVV() {
// TODO Auto-generated method stub
new MyTask().execute();
}

/**
* 方法3
*/
private void updateTv() {
// TODO Auto-generated method stub
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
tv.setText(TAG);
}
});
}
}).start();
}

/**
* 延迟3秒
*/
private void initHandler3() {
// TODO Auto-generated method stub
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub

mHandler.postDelayed(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
tv.setText(TAG);
}
}, 3000);
}
}).start();
}

/**
* 在子线程中方法
*/
private void initHandler2() {
// TODO Auto-generated method stub
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
mHandler.post(new Runnable() {

@Override
public void run() {
System.out.println(Thread.currentThread().getName());
tv.setText(TAG);
}
});
}
}).start();

}

/**
* Mothod 1; 该方法是在注线程中操作UI;
*/
private void initHandler() {
// TODO Auto-generated method stub

mHandler.post(new Runnable() {

@Override
public void run() {
Toast.makeText(MainActivity.this,
Thread.currentThread().getName(), 0).show();
tv.setText(TAG);
}
});
}

class MyTask extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);

tv.setText(TAG);
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐