1 Thread
val handle = object : Handler() {
override fun handleMessage(msg: Message?) {
msg.let {
val msgtmp = msg?.obj
}
}
}
/**
- 异步线程
*/
Thread(object : Runnable{
override fun run() {
val msg = Message.obtain()
msg.obj = "信息"
//返回主线程
handle.sendMessage(msg)
}
}).start()
2 AsyncTask
val resolver = baseContext.contentResolver
class AudioTask: AsyncTask<ContentResolver,Void,Cursor>() {
/**
* 回到主线程中调用
*/
override fun onPostExecute(result: Cursor?) {
super.onPostExecute(result)
// 打印查询结果
print(cursor.toString())
}
/**
* 后台new的Thread 开始 后台查询
*/
override fun doInBackground(vararg p0: ContentResolver?): Cursor {
val cursor = p0[0].query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
arrayOf(MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.SIZE
),
null,
null,
null
)
return cursor
}
}
AudioTask().execute(resolver)
3 AsyncQueryHandler
val reselor = baseContext.contentResolver
val handle = object : AsyncQueryHandler(reselor){
/**
* 查询完成 主线程回调 处理
*/
override fun onQueryComplete(token: Int, cookie: Any?, cursor: Cursor?) {
super.onQueryComplete(token, cookie, cursor)
// 打印查询结果
print(cursor.toString())
}
}
/**
* 异步线程 开始查询
*/
handle.startQuery(0,null,MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
arrayOf(MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.SIZE),
null,
null,
null)
版权声明:本文为Sico2Sico原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。