public class MainActivity extends AppCompatActivity {
Handler mChildHandler;
HandlerThread mHandlerThread;
HandlerThread mHandlerThread;
Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1. AsyncTask
new ImageAsyncTask().execute();
/*2. HandlerThread
mHandler = new Handler();
mHandlerThread = new HandlerThread("handlerThread");
mHandlerThread.start();
mChildHandler = new Handler(mHandlerThread.getLooper());
mChildHandler.post(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
mHandler.post(new Runnable() {
@Override
public void run() {
findViewById(R.id.imageview).setVisibility(View.VISIBLE);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});*/
/*3. Thread+Handler
new ChildThread().start();*/
}
@Override
protected void onResume() {
super.onResume();
}
class ImageAsyncTask extends AsyncTask<String, Integer, Boolean>{
@Override
protected Boolean doInBackground(String... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Boolean aBoolean) {
findViewById(R.id.imageview).setVisibility(View.VISIBLE);
}
}
class ChildThread extends Thread{
@Override
public void run() {
super.run();
try {
sleep(2000);
mHandler.post(new Runnable() {
@Override
public void run() {
findViewById(R.id.imageview).setVisibility(View.VISIBLE);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1. AsyncTask
new ImageAsyncTask().execute();
/*2. HandlerThread
mHandler = new Handler();
mHandlerThread = new HandlerThread("handlerThread");
mHandlerThread.start();
mChildHandler = new Handler(mHandlerThread.getLooper());
mChildHandler.post(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
mHandler.post(new Runnable() {
@Override
public void run() {
findViewById(R.id.imageview).setVisibility(View.VISIBLE);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});*/
/*3. Thread+Handler
new ChildThread().start();*/
}
@Override
protected void onResume() {
super.onResume();
}
class ImageAsyncTask extends AsyncTask<String, Integer, Boolean>{
@Override
protected Boolean doInBackground(String... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Boolean aBoolean) {
findViewById(R.id.imageview).setVisibility(View.VISIBLE);
}
}
class ChildThread extends Thread{
@Override
public void run() {
super.run();
try {
sleep(2000);
mHandler.post(new Runnable() {
@Override
public void run() {
findViewById(R.id.imageview).setVisibility(View.VISIBLE);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
本文介绍了一种在Android应用中使用不同方法实现UI更新的技术,包括使用AsyncTask进行后台任务处理并更新UI,利用HandlerThread执行长时间运行的任务,以及通过简单的Thread结合Handler来达到同样的目的。
4077

被折叠的 条评论
为什么被折叠?



