kotlin 成为Android 的新宠,在此处简单介绍一下 AsyncTask :


首先写一个类继承 AysyncTask:

package com.example.administrator.myyyyimport android.content.Contextimport android.os.AsyncTaskimport android.util.Logimport android.widget.ProgressBarimport android.widget.Toast/** * Created by Administrator on 2017/6/7. */class MyAsyncTask : AsyncTask(){    var progressBar : ProgressBar?=null    var i = 0    var context :Context?=null    //任务执行之前开始调用此方法,可以在这里显示进度对话框。    override fun onPreExecute() {        super.onPreExecute()        Log.d("duke","开始")    }    //此方法在后台线程 执行,完成任务的主要工作,通常需要较长的时间。    override fun doInBackground(vararg p0: String?): String {        while (i<1000000){            i = i+10         publishProgress(i)        }        return "js"    }    //更新UI    override fun onProgressUpdate(vararg values: Int?) {        super.onProgressUpdate(*values)        //若有复杂逻辑,可以增加异常捕捉        progressBar?.progress = values?.get(0) ?: 0    }    //任务执行完了后执行    override fun onPostExecute(result: String?) {        super.onPostExecute(result)               Toast.makeText(context,"进程结束",Toast.LENGTH_LONG).show()    }}


在主线程调用:

        progressBar = findViewById(R.id.progressBar) as ProgressBar        progressBar?.max = 1000000        var myAsyncTask = MyAsyncTask()        myAsyncTask.progressBar = progressBar        myAsyncTask.context = this        myAsyncTask.execute()




更多相关文章

  1. Android Glide 升级4.8 后, 原方法error/preload/fallback 无法使
  2. Android再按一次退出程序实现方法
  3. Android getWindow().setFlags方法
  4. Android 为什么主线程的looper 一直循环不会ANR
  5. 同一功能在Android不同版本进行兼容的方法
  6. Android通过原生方式获取经纬度与城市信息的方法
  7. Android搜索控件的基本使用方法
  8. Android使用Sensor感应器实现线程中刷新UI创建android测力计的功
  9. Android官方离线文档(API文档)打开速度慢的解决方法

随机推荐

  1. 根据循环中的i改变函数中的参数
  2. [JS]小数部分处理
  3. iPhone的网站主题 - 什么是基本成分?
  4. 如何在bing地图中添加信息框到一个航点
  5. 函数的作用是:在javascript中将时间戳转
  6. Vue自定义指令实现checkbox全选功能
  7. 多种方法用javascript输出黑白棋
  8. javascript 动态数组的使用
  9. 检查重复项后使用insertbefore()
  10. 数组中的值由于未知原因而更改