編輯:關於Android編程
1.主線程裡面不能執行耗時的任務,耗時任務都是在子線程裡面執行的。
a.開啟子線程前,做一些界面初始化的操作。(彈出對話框,在界面上提示用戶正在更新,正在獲取數據等)
b.開啟子線程,在後台執行一個耗時的任務。
c.當後台的任務執行完畢後,發送一個消息,通過主線程更新界面(關閉對話框,彈出吐司,隱藏加載布局等)
2.代碼實現
a.定義抽象類
import android.app.Activity; import android.os.Handler; public abstract class MyAsyncTask extends Activity { private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { // 後台任務執行完了. onPostExecute(); }; }; public void doSomeThing() { onPreExecute(); new Thread() { public void run() { doInBackgroud(); handler.sendEmptyMessage(0); }; }.start(); } /** * 後台執行的任務 在子線程中執行 */ public abstract void doInBackgroud(); /** * 後台任務執行之前的操作,運行在主線程裡面的\ */ public abstract void onPreExecute(); /** * 後台任務執行後的操作,運行在主線程 */ public abstract void onPostExecute(); }
b.繼承抽象類
package cn.itcast.asynctask; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.widget.Toast; public class DemoActivity extends MyAsyncTask { private ProgressDialog pd; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); doSomeThing(); } @Override public void doInBackgroud() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } } @Override public void onPreExecute() { pd = new ProgressDialog(this); pd.setMessage("我在執行耗時的操作"); pd.show(); } @Override public void onPostExecute() { pd.dismiss(); Toast.makeText(this, "執行完畢", 0).show(); } }
文件上傳可能是一個比較耗時的操作,如果為上傳操作帶上進度提示則可以更好的提高用戶體驗,最後效果如下圖: &nbs
第一個動畫文件btn_anim.xml 2-在res文件夾 anim文件夾下面,建立第二個文件layout_anim.xml):
Action Bar是app應用頂部的一個方形區域,不一定總會顯示(如全屏Theme時),它屬於窗口的一部分,有點類似於windows的窗口的標題
本文實例為大家分享了Android圓形菜單的使用方法,供大家參考,具體內容如下MainActivity.java代碼:package siso.handlerdemo;i