• Android 开发工具类 15_ MyAsyncTask


    AsyncTask 对于生命周期较短且需要在UI上显示进度和结果的后台操作是很好的解决方案。然而,当 Activity 重新启动时,这种操作将不会持续进行,也就是说,AsyncTask 在设备的方向变化而导致 Activity 被销毁和重新创建时会被取消。对于生命周期较长的后台操作,如从 Internet 下载数据,使用 Service 组件是更好的选择。

     1 private class MyAsyncTask extends AsyncTask<String, Integer, String> {
     2     @Override
     3     protected String doInBackground(String... parameter) {
     4       // Moved to a background thread.
     5       String result = "";
     6       int myProgress = 0;
     7       
     8       int inputLength = parameter[0].length();
     9 
    10       // Perform background processing task, update myProgress]
    11       for (int i = 1; i <= inputLength; i++) {
    12         myProgress = i;
    13         result = result + parameter[0].charAt(inputLength-i);
    14         try {
    15           Thread.sleep(100);
    16         } catch (InterruptedException e) { }
    17         publishProgress(myProgress);
    18       }
    19 
    20       // Return the value to be passed to onPostExecute
    21       return result;
    22     }
    23 
    24     @Override
    25     protected void onProgressUpdate(Integer... progress) {
    26       // Synchronized to UI thread.
    27       // Update progress bar, Notification, or other UI elements
    28       asyncProgress.setProgress(progress[0]);
    29     }
    30 
    31     @Override
    32     protected void onPostExecute(String result) {
    33       // Synchronized to UI thread.
    34       // Report results via UI update, Dialog, or notifications
    35       asyncTextView.setText(result);
    36     }
    37   }
    38   

    执行异步任务。每一个 AsyncTask 实例只能执行一次。如果试图第二次调用 execute,则会抛出一个异常。

    1 private void executeAsync() {
    2     /**
    3      * Listing 9-12: Executing an asynchronous task
    4      */
    5     String input = "redrum ... redrum";
    6     new MyAsyncTask().execute(input); 
    7   }
  • 相关阅读:
    二、线程的生命周期
    一、多线程基础
    Java中的三种代理模式(转载)
    SpringBoot+Thymeleaf实现国际化
    Centos7设置Jar包开机自启动
    Centos7安装及卸载RabbitMQ
    Nacos无法读取配置中心数据
    解决SSH连接Linux系统特别慢的问题
    KMP字符串匹配算法
    格雷厄姆扫描法解凸壳问题
  • 原文地址:https://www.cnblogs.com/renzimu/p/4536700.html
Copyright © 2020-2023  润新知