編輯:關於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();
}
}
Android開發之httpclient文件上傳實現
文件上傳可能是一個比較耗時的操作,如果為上傳操作帶上進度提示則可以更好的提高用戶體驗,最後效果如下圖: &nbs
Android點贊動畫效果 ,點贊後加一,2種方法,①補間動畫②位移動畫
第一個動畫文件btn_anim.xml 2-在res文件夾 anim文件夾下面,建立第二個文件layout_anim.xml):
Android ActionBar應用一:ActionBar返回任意頁面和頂部搜索欄實現
Action Bar是app應用頂部的一個方形區域,不一定總會顯示(如全屏Theme時),它屬於窗口的一部分,有點類似於windows的窗口的標題
Android學習教程之圓形Menu菜單制作方法(1)
本文實例為大家分享了Android圓形菜單的使用方法,供大家參考,具體內容如下MainActivity.java代碼:package siso.handlerdemo;i