07 总结ProgressDialog 异步任务
生活随笔
收集整理的這篇文章主要介紹了
07 总结ProgressDialog 异步任务
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1,ProgressDialog
?? ?>?? ??? ?//使用對象? 設(shè)置標(biāo)題
?? ??? ??? ?progressDialog.setTitle("標(biāo)題");
?? ??? ??? ?//設(shè)置圖標(biāo)
?? ??? ??? ?progressDialog.setIcon(R.drawable.ic_launcher);
?? ??? ??? ?//設(shè)置展示的內(nèi)容
?? ??? ??? ?progressDialog.setMessage("正在下載請稍等....");
?? ??? ??? ?//設(shè)置樣式
?? ??? ??? ?progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
?? ??? ??? ?//展示
?? ??? ??? ?progressDialog.show();
?? ??? ??? ?
2,UI線程和工作線程
?? ?>Ui線程也是Main線程? 負(fù)責(zé)會在UI界面和事件分發(fā)
?? ?倆個主要要素:
?? ??? ??? ?>1,在Ui線程不能做阻塞操作? (在主線程阻塞超過5s程序出錯? "程序無反應(yīng)")
?? ??? ??? ?>2,在主線程以外的線程(子線程)不能更新UI
3, 什么是異步任務(wù)
?? ?>在子線程做耗時操作? 將結(jié)果回調(diào)到主線程
4, 為什么要使用異步任務(wù)
?? ?
?? ?>1,在Ui線程不能做阻塞操作? (在主線程阻塞超過5s程序出錯? "程序無反應(yīng)")? 4.0以后? 不允許在主線程下載
?? ?>2,在主線程以外的線程(子線程)不能更新UI
?? ? * 1,創(chuàng)建一個類 繼承AsyncTask,同時聲明三個參數(shù)
?? ? * Params:子線程執(zhí)行方法里參數(shù)類型
?? ? * Progress;子線程執(zhí)行任務(wù)的進(jìn)度類型 如果不想展示進(jìn)度? Void
?? ? * Result:子線程執(zhí)行任務(wù)的結(jié)果類型
?? ? *
?? ? * 2,實現(xiàn)核心方法
?? ? * doInBackground(String... params){}
?? ? *
?? ? * onPostExecute(byte[] result)
?? ? *
?? ? * 3,在主線程中執(zhí)行異步請求
?? ?>完整的AsyncTask
?? ?public class MyAsyncTask extends AsyncTask<String, Integer, List<String>>{
?? ??? ?
?? ??? ?/**
?? ??? ? * 在首次執(zhí)行異步任務(wù)時? 調(diào)用此方法?? 做初始化操作
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected void onPreExecute() {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onPreExecute();
?? ??? ?}
?? ??? ?/**
?? ??? ? * 在子線程中執(zhí)行?? 做耗時操作
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected List<String> doInBackground(String... params) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?//publishProgress(values)
?? ??? ??? ?return null;
?? ??? ?}
?? ??? ?/**
?? ??? ? * 更新進(jìn)度的方法?? 在doInBackground中 執(zhí)行publishProgress(values)? 將進(jìn)度值發(fā)送給onProgressUpdate
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected void onProgressUpdate(Integer... values) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onProgressUpdate(values);
?? ??? ?}
?? ??? ?
?? ??? ?/**
?? ??? ? * 在主線程中更新UI 在執(zhí)行完doInBackground之后執(zhí)行 onPostExecute
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected void onPostExecute(List<String> result) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onPostExecute(result);
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?//點(diǎn)擊其他按鈕? 取消AsyncTask時? 執(zhí)行此方法
?? ??? ?@Override
?? ??? ?protected void onCancelled(List<String> result) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onCancelled(result);
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?
?? ?}
5, 設(shè)置View的顯示與隱藏
?? ?>visibility=""
?? ??? ?>gone:??????? 隱藏 不占空間
?? ??? ?>visible????? 顯示
?? ??? ?>invisible??? 隱藏? 占空間
?? ?>setVisibility()
?? ??? ?>View.GONE
?? ??? ?>View.VISIBLE
?? ??? ?>View.INVISIBLE
6,? AsyncTask注意事項:
?? ?>1,AsyncTask實例只能調(diào)用一次
?? ?>2,必須在Ui線程得到AsyncTask對象
?? ?>3,AsyncTask方法 系統(tǒng)自動調(diào)用
?? ?>4,數(shù)據(jù)進(jìn)行交互(子線程和主線程交互)AsyncTask,否則開啟一個線程就行
?? ?>5,異步任務(wù)必須在UI線程啟動
?? ?
?? ?
?? ??? ?
?? ????
?? ?>?? ??? ?//使用對象? 設(shè)置標(biāo)題
?? ??? ??? ?progressDialog.setTitle("標(biāo)題");
?? ??? ??? ?//設(shè)置圖標(biāo)
?? ??? ??? ?progressDialog.setIcon(R.drawable.ic_launcher);
?? ??? ??? ?//設(shè)置展示的內(nèi)容
?? ??? ??? ?progressDialog.setMessage("正在下載請稍等....");
?? ??? ??? ?//設(shè)置樣式
?? ??? ??? ?progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
?? ??? ??? ?//展示
?? ??? ??? ?progressDialog.show();
?? ??? ??? ?
2,UI線程和工作線程
?? ?>Ui線程也是Main線程? 負(fù)責(zé)會在UI界面和事件分發(fā)
?? ?倆個主要要素:
?? ??? ??? ?>1,在Ui線程不能做阻塞操作? (在主線程阻塞超過5s程序出錯? "程序無反應(yīng)")
?? ??? ??? ?>2,在主線程以外的線程(子線程)不能更新UI
3, 什么是異步任務(wù)
?? ?>在子線程做耗時操作? 將結(jié)果回調(diào)到主線程
4, 為什么要使用異步任務(wù)
?? ?
?? ?>1,在Ui線程不能做阻塞操作? (在主線程阻塞超過5s程序出錯? "程序無反應(yīng)")? 4.0以后? 不允許在主線程下載
?? ?>2,在主線程以外的線程(子線程)不能更新UI
?? ? * 1,創(chuàng)建一個類 繼承AsyncTask,同時聲明三個參數(shù)
?? ? * Params:子線程執(zhí)行方法里參數(shù)類型
?? ? * Progress;子線程執(zhí)行任務(wù)的進(jìn)度類型 如果不想展示進(jìn)度? Void
?? ? * Result:子線程執(zhí)行任務(wù)的結(jié)果類型
?? ? *
?? ? * 2,實現(xiàn)核心方法
?? ? * doInBackground(String... params){}
?? ? *
?? ? * onPostExecute(byte[] result)
?? ? *
?? ? * 3,在主線程中執(zhí)行異步請求
?? ?>完整的AsyncTask
?? ?public class MyAsyncTask extends AsyncTask<String, Integer, List<String>>{
?? ??? ?
?? ??? ?/**
?? ??? ? * 在首次執(zhí)行異步任務(wù)時? 調(diào)用此方法?? 做初始化操作
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected void onPreExecute() {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onPreExecute();
?? ??? ?}
?? ??? ?/**
?? ??? ? * 在子線程中執(zhí)行?? 做耗時操作
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected List<String> doInBackground(String... params) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?//publishProgress(values)
?? ??? ??? ?return null;
?? ??? ?}
?? ??? ?/**
?? ??? ? * 更新進(jìn)度的方法?? 在doInBackground中 執(zhí)行publishProgress(values)? 將進(jìn)度值發(fā)送給onProgressUpdate
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected void onProgressUpdate(Integer... values) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onProgressUpdate(values);
?? ??? ?}
?? ??? ?
?? ??? ?/**
?? ??? ? * 在主線程中更新UI 在執(zhí)行完doInBackground之后執(zhí)行 onPostExecute
?? ??? ? */
?? ??? ?@Override
?? ??? ?protected void onPostExecute(List<String> result) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onPostExecute(result);
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?//點(diǎn)擊其他按鈕? 取消AsyncTask時? 執(zhí)行此方法
?? ??? ?@Override
?? ??? ?protected void onCancelled(List<String> result) {
?? ??? ??? ?// TODO Auto-generated method stub
?? ??? ??? ?super.onCancelled(result);
?? ??? ?}
?? ??? ?
?? ??? ?
?? ??? ?
?? ?}
5, 設(shè)置View的顯示與隱藏
?? ?>visibility=""
?? ??? ?>gone:??????? 隱藏 不占空間
?? ??? ?>visible????? 顯示
?? ??? ?>invisible??? 隱藏? 占空間
?? ?>setVisibility()
?? ??? ?>View.GONE
?? ??? ?>View.VISIBLE
?? ??? ?>View.INVISIBLE
6,? AsyncTask注意事項:
?? ?>1,AsyncTask實例只能調(diào)用一次
?? ?>2,必須在Ui線程得到AsyncTask對象
?? ?>3,AsyncTask方法 系統(tǒng)自動調(diào)用
?? ?>4,數(shù)據(jù)進(jìn)行交互(子線程和主線程交互)AsyncTask,否則開啟一個線程就行
?? ?>5,異步任務(wù)必須在UI線程啟動
?? ?
?? ?
?? ??? ?
?? ????
轉(zhuǎn)載于:https://www.cnblogs.com/muyuge/p/6152285.html
總結(jié)
以上是生活随笔為你收集整理的07 总结ProgressDialog 异步任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux里的进程简介
- 下一篇: 怎么解决xp系统不能安装NET Fram