jay*_*uri 4 multithreading android handler android-asynctask
我开始学习 android 编程,正在开发一个小游戏。我听说做后台操作或更新或下载或任何后台和耗时的事情不应该用 ui 线程来完成,而是使用线程/可运行或异步任务。但我不能在线程中做一些事情,比如到数据库的后台连接,因为这种连接与剩余的处理程序一起工作,runonuithread,asynctask.am 非常困惑在哪里使用哪个。我有一些问题 1.handler,runonuithread 都在 ui 线程上运行,thread/runnable 是一个不同的线程,在异步任务中,doinbackground 方法在不同的线程上运行,而其他方法如 onprogressupdate、onpreexecute 和 onpostexecute 在 ui 线程上运行。对?如果是这样的话,我编写了一个程序来与线程/可运行数据库进行连接,它没有工作,但是当我在 doinbackground 中编写它时,它工作了。我的困惑是,由于这两种方法都在不同的线程上运行,为什么会发生这种情况。2.顺便说一句,这4个主要区别是什么,它们适用和不适用的地方。并且还想知道只有 ui 线程才能完成的任务是什么。在广告中感谢:)
AHandler允许您发布要在主 UI 线程上执行的消息。Activity#runOnUiThread(Runnable)是一种方便的方法,它在Handler内部使用 aRunnable在 UI 线程上发布 a (请参阅源代码)。Handlers 通常用于将后台线程上生成的事件与主 UI 线程同步。例如,由于View无法在后台线程上直接修改 s 和其他 UI 小部件,因此后台线程可能会发布一条消息,在主 UI 线程而不是在后台进行这些修改。
AnAsyncTask是一个实用程序类,它使用线程池来执行任务并提供有用的回调方法(即onPreExecute,onPostExecute等),保证在主 UI 线程上执行(换句话说,它Handler从开发人员那里抽象出)。
| 归档时间: |
|
| 查看次数: |
5553 次 |
| 最近记录: |