3.18

安卓中的多线程与异步任务处理​
为了保证安卓应用的流畅性和响应性,处理耗时任务时需要使用多线程和异步处理机制。常见的方式有使用 Thread 类、Handler、AsyncTask 以及更现代的 Kotlin 协程和 Java 的 Executor 框架。​
使用 Thread 类创建一个简单的子线程:​

Thread thread = new Thread(new Runnable() {​
@Override​
public void run() {​
// 耗时操作,例如网络请求或文件读取​
try {​
Thread.sleep(3000);​
} catch (InterruptedException e) {​
e.printStackTrace();​
}​
// 在子线程中不能直接更新UI,需要通过Handler传递消息​
}​
});​
thread.start();​

结合 Handler 来更新 UI:​

Handler handler = new Handler(Looper.getMainLooper()) {​
@Override​
public void handleMessage(@NonNull Message msg) {​
if (msg.what == 1) {​
TextView textView = findViewById(R.id.text_view);​
textView.setText("UI updated from thread!");​
}​
}​
};​
Thread thread = new Thread(new Runnable() {​
@Override​
public void run() {​
try {​
Thread.sleep(3000);​
Message message = Message.obtain();​
message.what = 1;​
handler.sendMessage(message);​
} catch (InterruptedException e) {​
e.printStackTrace();​
}​
}​
});​
thread.start();​

AsyncTask 是安卓封装的异步任务类,它简化了子线程与主线程之间的交互:​

class MyAsyncTask extends AsyncTask<Void, Void, String> {​
@Override​
protected String doInBackground(Void... voids) {​
try {​
Thread.sleep(3000);​
return "Task completed";​
} catch (InterruptedException e) {​
e.printStackTrace();​
return "Error";​
}​
}​
@Override​
protected void onPostExecute(String result) {​
TextView textView = findViewById(R.id.text_view);​
textView.setText(result);​
}​
}​
new MyAsyncTask().execute();​

而 Kotlin 协程则提供了更简洁、更强大的异步编程方式,通过launch和suspend函数可以轻松处理异步任务,后续博客将深入介绍协程的高级用法。

posted @ 2025-03-18 21:51  Echosssss  阅读(10)  评论(0)    收藏  举报