復雜耗時的操作,常常會阻塞UI主線程,從而引起程序卡死!針對這種情況,可以通過簡單的策略規避:新開一個工作線程,在工作線程中執行復雜操作,操作完畢之後,
通過Handler通知UI線程,更新狀態信息!關鍵代碼,請參閱下面:
- private void SynTask() {
- new Thread() {
- @Override
- public void run() {
-
- if (IsHaveInternet()){// 聯網
- DowloadData();//下載數據
- //通知UI
- Message msg = new Message();
- msg.what = mDonlandEnd;
- handler.sendMessage(msg);
- }
- }
- }.start();
- }
UI主線程,怎麼通過handler接手工作線程的信息呢:
- Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- casem mDonlandEnd:
- ShowToast(GetString(R.string.DonlandEnd));
- break;
- default:
- break;
- }
- }
- };
主要用到的類有:Android.os.Handler、android.os.Message及java.lang.Thread