編輯:關於Android編程
, Android中實現了默認的進度提示對話框,即ProgressDialog,通過實例化和一些簡單設置,就可以使用了。
復制代碼 代碼如下:
private class DownloadDBTask extends AsyncTask<String, Integer, String> {
// 可變長的輸入參數,與AsyncTask.exucute()對應
ProgressDialog pdialog;
public DownloadDBTask(Context context){
pdialog = new ProgressDialog(context, 0);
pdialog.setButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i) {
dialog.cancel();
}
});
pdialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
public void onCancel(DialogInterface dialog) {
finish();
}
});
pdialog.setTitle("第一次使用,正在下載數據...");
pdialog.setCancelable(true);
pdialog.setMax(100);
pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pdialog.show();
}
@Override
protected String doInBackground(String... params) {
try{
if (DataOper.GetTopNearestPOIs(1, mDBHelper).size()==0)
DataOper.GetAllPtsFromNet(mDBHelper, pdialog); // 從網絡上下載數據記錄的功能
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected void onPostExecute(String result) {
pdialog.dismiss();
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Integer... values) {
}
}
對於寫好的異步任務類,調用方法為:
復制代碼 代碼如下:
DownloadDBTask task = new DownloadDBTask(context);
task.execute("");
注意AsyncTask為泛型類,具有三個泛型參數,此處設計為 <String, Integer, String>,對應於運行參數、進度值類型和返回參數。
從sdk的文檔中看到,當一個AsyncTask運行的過程中,經歷了4個步驟:
1、onPreExecute(), 在excute調用後立即在ui線程中執行。 This step is normally used to setup the task, for instance by showing a progress bar in the user interface.
2、doInBackground, 當 onPreExecute() 完成後, 立即在後台線程中運行. This step is used to perform background computation that can take a long time. The parameters of the asynchronous task are passed to this step. The result of the computation must be returned by this step and will be passed back to the last step. This step can also use publishProgress to publish one or more units of progress. These values are published on the UI thread, in the onProgressUpdate step.
3、onProgressUpdate, 在調用publishProgress後,在ui線程中運行. The timing of the execution is undefined. This method is used to display any form of progress in the user interface while the background computation is still executing. For instance, it can be used to animate a progress bar or show logs in a text field.
4、onPostExecute, 後台運算完成時在ui線程中調用. The result of the background computation is passed to this step as a parameter.
在activity中有時需要嵌套調用fragment,但嵌套調用往往帶來視圖的顯示與預期的不一樣或是fragment的切換有問題。在使用時要注意幾點: 1、fragm
叨了個叨最近因為換工作的一些瑣事搞的我一個頭兩個大,也沒怎麼去學新東西,實在是有些愧疚。新項目用到了EventBus3.0,原來只是聽說EventBus的鼎鼎大名,一直沒
由於本人喜愛Git,那就介紹Git,,如何和在GitHub和Oschina拉取和提交項目,並且你會學會如何解決沖突問題!!博主還是那個圖片控!!准備工作git下載地址:G
很久沒有空更新博客了,以至於挺多東西都用過之後就忘記了,沒有很好的記錄下來,之前在工作的時候也是這樣,用完就忘記,所以覺得還是很有必要把自己用過的一些東西,