kotlin 之 Android AsyncTask
16lz
2021-01-23
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()
更多相关文章
- Android Glide 升级4.8 后, 原方法error/preload/fallback 无法使
- Android再按一次退出程序实现方法
- Android getWindow().setFlags方法
- Android 为什么主线程的looper 一直循环不会ANR
- 同一功能在Android不同版本进行兼容的方法
- Android通过原生方式获取经纬度与城市信息的方法
- Android搜索控件的基本使用方法
- Android使用Sensor感应器实现线程中刷新UI创建android测力计的功
- Android官方离线文档(API文档)打开速度慢的解决方法