zoukankan      html  css  js  c++  java
  • 你真的会用AsyncTask吗?(一)

    一个典型AsyncTask的。

    01 public class DialogTestActivity extends Activity {
    02     private Button button1;
    03     private Task task;
    04  
    05     @Override
    06     public void onCreate(Bundle savedInstanceState) {
    07         super.onCreate(savedInstanceState);
    08         setContentView(R.layout.main);
    09         this.button1 = (Button) findViewById(R.id.button1);
    10         button1.setOnClickListener(new View.OnClickListener() {
    11  
    12             @Override
    13             public void onClick(View v) {
    14                 if (task != null && task.getStatus() == AsyncTask.Status.RUNNING) {
    15                     Toast.makeText(DialogTestActivity.this, "task 正在运行", Toast.LENGTH_SHORT).show();
    16                     //task.cancel(true);  //  如果Task还在运行,则先取消它
    17                 } else {
    18                     task = new Task();
    19                     task.execute();
    20                 }
    21             }
    22         });
    23     }
    24  
    25     @Override
    26     protected void onDestroy() {
    27         super.onDestroy();
    28         // 用户按回退的时候要取消正在进行的任务
    29         task.cancel(true);
    30     }
    31  
    32     private class Task extends AsyncTask<Void, Void, Void> {
    33          
    34         @Override
    35         protected void onPreExecute() {
    36             super.onPreExecute();
    37             Toast.makeText(DialogTestActivity.this, "task 开始运行", Toast.LENGTH_SHORT).show();
    38         }
    39          
    40         @Override
    41         protected Void doInBackground(Void... params) {
    42             try {
    43                 // 模拟耗时操作 比如网络连接等
    44                 Thread.sleep(5000);
    45             } catch (InterruptedException e) {
    46                 e.printStackTrace();
    47             }
    48             // 判断如果task已经cancel就没有必须继续进行下面的操作
    49             if (!isCancelled()) {
    50                 System.out.println("task 如果被cancel,就不会显示");
    51             }
    52             return null;
    53         }
    54  
    55         @Override
    56         protected void onPostExecute(Void result) {
    57             super.onPostExecute(result);
    58             Toast.makeText(DialogTestActivity.this, "task 完成", Toast.LENGTH_SHORT).show();
    59             // 所有调用当前context的对象要注意判断activity是否还存在
    60             // 典型的比如弹窗
    61             if (!isFinishing()) {
    62                 try {
    63                     createAlertDialog().show();
    64                 } catch (Exception e) {
    65                 }
    66             }
    67         }
    68  
    69         @Override
    70         protected void onCancelled() {
    71             super.onCancelled();
    72             System.out.println("task 取消");
    73         }
    74  
    75     }
    76  
    77     private AlertDialog createAlertDialog() {
    78         return new AlertDialog.Builder(DialogTestActivity.this).setTitle("fadfasdf")
    79                 .setPositiveButton("OK", new DialogInterface.OnClickListener() {
    80                     public void onClick(DialogInterface dialog, int whichButton) {
    81  
    82                     }
    83                 }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    84                     public void onClick(DialogInterface dialog, int whichButton) {
    85  
    86                     }
    87                 }).create();
    88     }
    89 }

     

     

    路漫漫其修远兮 吾将上下而求索
  • 相关阅读:
    gzip是一种数据格式,deflate是一种压缩算法
    js 实现图片上传 续
    iframe 元素会创建包含另外一个文档的内联框架(即行内框架)
    HTTPS简介----
    回归测试
    HTTP 返回码 400
    js 实现 一张图片的上传
    121. Best Time to Buy and Sell Stock
    119. Pascal's Triangle II
    118. Pascal's Triangle
  • 原文地址:https://www.cnblogs.com/hudabing/p/3198644.html
Copyright © 2011-2022 走看看