亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Android必學-AsyncTask基礎

難度中級
時長49分
學習人數
綜合評分9.77
206人評價 查看評價
9.8 內容實用
9.9 簡潔易懂
9.6 邏輯清晰
  • AsyncTask的注意事項

    查看全部
    0 采集 收起 來源:總結

    2020-03-27

  • asyncTask的執行順序

    查看全部
    0 采集 收起 來源:與UI線程通信

    2020-03-27

  • 在execute執行的參數,傳遞進來的參數作為doInBackground,String 傳遞進來的第一個參數,

    先調用PreExcute的操作,然后調用doInBackground的方法開始真正的異步操作原理,最后返回指定的類(onPostexecute)里面.

    查看全部
    0 采集 收起 來源:與UI線程通信

    2020-03-27

  • doBackground 開啟異步線程進行操作的,基本屬于耗時的操作

    onPreExecute 線程開啟之前的操作

    前面設置的返回值設置的參數為Bitmap<String ,Void,Bitmap>,前面調用doInBackground后返回Bitmap的值,所以在onPostExcute返回的值為Bitmap,可以去設置UI。



    查看全部
    0 采集 收起 來源:與UI線程通信

    2020-03-27

  • 1.獲取傳遞進來的參數 String url=params[0]只獲取第一位參數

    2.網絡的操作,BitmapFactory.decodeStream 將輸入流解析成Bitmap

    3.將Bitmap作為返回值

    查看全部
    0 采集 收起 來源:創建AsyncTask類

    2020-03-27

  • AsynckTask 加載圖片

    查看全部
    0 采集 收起 來源:創建AsyncTask類

    2020-03-23

  • 他的執行順序

    查看全部
  • onPreExcute執行前的方法

    doInBackground? 執行中的方法

    onPostExcute 執行后的方法

    查看全部
  • AsynckTask的異步參數,和四種方法

    查看全部
  • //Main.java:
    
    public?class?Main?extends?AppCompatActivity?{
    ????ImageView?imageView;
    ????ProgressBar?progressBar;
    ????ProgressBar?progressBar2;
    ????TextView?jishu,?hint;
    ????static?Handler?myHandler;
    ????ImageLoad?i1;
    ????Button?btn;
    
    ????@Override
    ????protected?void?onCreate(@Nullable?Bundle?savedInstanceState)?{
    ????????super.onCreate(savedInstanceState);
    ????????setContentView(R.layout.activity_main);
    ????????imageView?=?(ImageView)?findViewById(R.id.imageView);
    ????????progressBar?=?(ProgressBar)?findViewById(R.id.progressBar);
    ????????progressBar2?=?(ProgressBar)?findViewById(R.id.progressBar2);
    ????????jishu?=?(TextView)?findViewById(R.id.textView);
    ????????hint?=?(TextView)?findViewById(R.id.tv);
    ????????i1?=?new?ImageLoad(imageView,?progressBar,?progressBar2);
    ????????btn?=?(Button)?findViewById(R.id.button);
    ????}
    
    ????@Override
    ????protected?void?onPause()?{
    ????????super.onPause();
    ????????if?(i1?!=?null?&&?i1.getStatus()?==?AsyncTask.Status.RUNNING)?{
    ????????????i1.cancel(true);
    ????????}
    ????}
    
    ????public?void?startload(View?v)?{
    ????????btn.setEnabled(false);
    ????????jishu.setVisibility(View.VISIBLE);
    ????????myHandler?=?new?Handler()?{
    ????????????@Override
    ????????????public?void?handleMessage(Message?msg)?{
    ????????????????super.handleMessage(msg);
    ????????????????jishu.setText("Loading:"?+?msg.arg1?+?"%");
    ????????????????if?(msg.arg1?==?100)?{
    ????????????????????jishu.setVisibility(View.INVISIBLE);
    ????????????????????btn.setVisibility(View.INVISIBLE);
    ????????????????????hint.setVisibility(View.VISIBLE);
    ????????????????}
    ????????????}
    ????????};
    ????????i1.execute("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it
    ????????/u=3651717973,1621948329&fm=26&gp=0.jpg");
    ????}
    
    }
    
    
    //ImageLoad.java:
    
    public?class?ImageLoad?extends?AsyncTask<String,?Integer,?Bitmap>?{
    ????ImageView?imageView;
    ????ProgressBar?progressBar;
    ????ProgressBar?progressBar2;
    ????static?Message?msg;
    
    ????public?ImageLoad(ImageView?imageView,?ProgressBar?progressBar,?ProgressBar?progressBar2)?{
    ????????this.imageView?=?imageView;
    ????????this.progressBar?=?progressBar;
    ????????this.progressBar2?=?progressBar2;
    ????}
    
    ????@Override
    ????protected?void?onPreExecute()?{
    ????????super.onPreExecute();
    ????????progressBar.setVisibility(View.VISIBLE);
    ????????progressBar2.setVisibility(View.VISIBLE);
    ????}
    
    ????@Override
    ????protected?Bitmap?doInBackground(String...?params)?{
    ????????Bitmap?bitmap?=?null;
    ????????HttpURLConnection?conn;
    ????????InputStream?is;
    ????????String?url?=?params[0];
    
    ????????try?{
    ????????????conn?=?(HttpURLConnection)?new?URL(url).openConnection();
    ????????????is?=?conn.getInputStream();
    ????????????BufferedInputStream?bis?=?new?BufferedInputStream(is);
    ????????????for?(int?i?=?0;?i?<?100;?i++)?{
    ????????????????if?(isCancelled())?{
    ????????????????????break;
    ????????????????}
    ????????????????publishProgress(i);
    ????????????????msg?=?Main.myHandler.obtainMessage();
    ????????????????msg.arg1?=?i?+?1;
    ????????????????Main.myHandler.sendMessage(msg);
    ????????????????Thread.sleep(25);
    ????????????}
    ????????????bitmap?=?BitmapFactory.decodeStream(is);
    ????????????is.close();
    ????????????bis.close();
    ????????}?catch?(IOException?e)?{
    ????????????e.printStackTrace();
    ????????}?catch?(InterruptedException?e)?{
    ????????????e.printStackTrace();
    ????????}
    ????????return?bitmap;
    ????}
    
    ????@Override
    ????protected?void?onProgressUpdate(Integer...?values)?{
    ????????super.onProgressUpdate(values);
    ????????progressBar2.setProgress(values[0]);
    ????}
    
    ????@Override
    ????protected?void?onPostExecute(Bitmap?bitmap)?{
    ????????super.onPostExecute(bitmap);
    ????????if?(isCancelled())?{
    ????????????return;
    ????????}
    ????????progressBar.setVisibility(View.INVISIBLE);
    ????????progressBar2.setVisibility(View.INVISIBLE);
    ????????imageView.setImageBitmap(bitmap);
    ????}
    }
    
    //activity_main.xml:
    
    <?xml?version="1.0"?encoding="utf-8"?>
    <LinearLayout?xmlns:android="http://schemas.android.com/apk/res/android"
    ????xmlns:app="http://schemas.android.com/apk/res-auto"
    ????xmlns:tools="http://schemas.android.com/tools"
    ????android:layout_width="match_parent"
    ????android:layout_height="match_parent"
    ????android:orientation="vertical"
    ????android:padding="10dp"
    ????tools:context=".Main">
    
    ????<Button
    ????????android:id="@+id/button"
    ????????android:layout_width="match_parent"
    ????????android:layout_height="wrap_content"
    ????????android:text="Show?the?Image"
    ????????android:layout_gravity="center"
    ????????android:onClick="startload"/>
    
    ????<TextView
    ????????android:id="@+id/tv"
    ????????android:layout_width="wrap_content"
    ????????android:layout_height="wrap_content"
    ????????android:visibility="invisible"
    ????????android:layout_gravity="center"
    ????????android:text="已成功顯示"
    ????????android:textSize="40dp"/>
    
    ????<ImageView
    ????????android:id="@+id/imageView"
    ????????android:layout_width="wrap_content"
    ????????android:layout_height="wrap_content"/>
    
    ????<ProgressBar
    ????????android:id="@+id/progressBar"
    ????????android:layout_width="match_parent"
    ????????android:layout_height="wrap_content"
    ????????android:layout_marginTop="100dp"
    ????????android:visibility="invisible"?/>
    
    ????<TextView
    ????????android:id="@+id/textView"
    ????????android:layout_width="wrap_content"
    ????????android:layout_height="wrap_content"
    ????????android:visibility="invisible"
    ????????android:textSize="20dp"
    ????????android:layout_marginTop="30dp"
    ????????android:layout_gravity="center"
    ????????android:text=""?/>
    
    ????<ProgressBar
    ????????android:id="@+id/progressBar2"
    ????????
    ????????android:layout_width="match_parent"
    ????????android:layout_height="wrap_content"
    ????????android:visibility="invisible"?/>
    
    </LinearLayout>


    查看全部
  • public?void?onPause(){
    if?(mtask?!?=?null?||?mtask.getStatus()?==?AsyncTask.Status.RUNNING)?{
    ????????mtask.cancel(true);
    ????????//若AsyncTask對象存在且處于運行狀態,便將此對象標記為
    ????????//取消狀態,然后在doInBackground()方法中利用isCancelled()
    ????????//方法進行相應操作
    }


    查看全部
  • ---轉
    1.protected?Bitmap?doInBackground(String...?params)傳進來的是一個可變長的數組。<br><br>
    2.String?url?=?params[0];取出對應的URL<br><br>
    3.URLConnection?connection:定義網絡連接對象<br><br>
    4.InputStream?is?:用于獲取數據的輸入流。<br><br>
    5.connection?=?new?URL(url).openConnection():獲取網絡連接對象。<br><br>
    6.?is?=?connection.getInputStream():獲取輸入流<br><br>
    7.bitmap?=?BitmapFactory.decodeStream();將輸入流解析成bitmap<br><br>
    8.is.close();關閉輸入流
    9.bis.close()關閉輸入流
    <br><br>
    通過這些方式就將url所對應的圖片解析成了bitmap
    
    AsyncTask<String,Void,Bitmap>三個參數分別為:url類型,進度值類型,返回值類型。
    這里的例子暫時不設置進度值,url設置為String類型,又因為我們加載的是一張Bitmap,所以返回的參數類型設置為?Bitmap。
    1.?doInBackground(String...params)傳進來的是一個可變長數組,也就是說,我們可以傳進不止一個參數(通過execute()傳進來),這些參數依次存在于這個數組中?,F在只有一個參數,所以只要寫個params[0]取出對應的URL即可。


    查看全部
    0 采集 收起 來源:創建AsyncTask類

    2020-01-30

  • 回調方法的調用順序

    http://img1.sycdn.imooc.com//5e329c2a000184aa19201080.jpg

    查看全部
  • 構建AsyncTask子類的回調方法

    http://img1.sycdn.imooc.com//5e329bc900013a8919201080.jpg

    查看全部
  • AsyncTask子類的參數

    http://img1.sycdn.imooc.com//5e329ba10001e58c19201080.jpg

    查看全部
  • 下載圖片流程
    查看全部
    0 采集 收起 來源:總結

    2020-01-26

    1. 必須在ui線程中創建asynctask實例,并調用execute方法

    2. 重寫的方法是系統自動調用 的,也就是我們只能重寫,不能選擇何時調用

    3. 每個asynctask只能執行一次,多次調用會引發運行時異常

    4. 只有doinbackground才是運行在其他線程(非主線程)更新ui是在主線程



    查看全部
    0 采集 收起 來源:總結

    2018-09-25

  • asynasynctask異步操作的示例

    繼承asynctask<string, void ,bitmap>

    string?啟動任務時輸入的參數類型

    void后臺執行任務時返回的? 進度值類型

    bitmap?后臺執行任務后返回? 結果的類型

    1. 子類調用execute方法,以URL為傳進去的參數

    2. 調用onpreexecute,進行初始化操作,比如將進度條可見

    3. 調用doinbackground方法進行真正的異步操作處理,例如耗時操作,返回一個類型給onpostexecute方法

    4. onpostexecute方法(運行在主線程,可進行ui操作,顯示圖片)

    查看全部
    0 采集 收起 來源:與UI線程通信

    2018-09-25

  • asynctask?<params,progress,result>?

    params:啟動任務時輸入的參數類型

    progress:后臺執行任務時返回的? 進度值類型

    result :后臺執行任務后返回? 結果的類型

    asynctask子類必須回調的方法及順序:

    2、doinbackground:必須重寫,在里面執行了publishprogress方法,系統才回調3、onprogressupdate方法

    1、onpreexecute:后臺耗時任務操作前被調用,用于初始化操作

    4、onpostexecute:當doinbackground完成后返回值,系統自動調用onpostexecute,接收值

    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
本課程是Android初級課程 1、掌握基本的Android應用程序開發方法 2、掌握AsyncTask中個方法中參數的意義 3、掌握AsyncTask中4個常用的方法
老師告訴你能學到什么?
1、了解Android的單線程模型 2、 AsyncTask的基本構成 3、 AsyncTask的回調方法 4、 AsyncTask實例

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!