我相信 Google 建议开发人员使用 AsyncTask。
但是,我想知道它与使用“new Thread”然后调用“RunOnUiThread”在性能和内存效率方面有何不同。
使用 RunOnUithread 的示例:
// some code #1
Thread t = new Thread("Thread1") {
@Override
public void run() {
// some code #2
runOnUiThread(new Runnable() {
public void run() {
// some code #3 (that needs to be ran in UI thread)
}
});
}
};
t.start();
vs.
异步任务:
onPreExecute() {
// some code #1
}
doInBackground() {
// some code #2
}
onPostExecute() {
// some code #3
}
有什么优点/缺点?
Edit:
我并不是在寻找“更容易查看代码”、“方便开发人员”等答案。
我实际上是在寻找幕后的技术差异。
例如,下面保罗·尼科诺维奇的回答就是我想看到的答案。 (但是AsyncTask的行为是一样的)
当你使用new Thread
每次执行时,您实际上都是在创建一个新线程。AsyncTask
但是,使用最多 128 个线程的静态池,并且只要旧线程存在,就会重用它。因此,串行运行 AsyncTask 10 次只会创建一个运行该任务 10 次的线程,而不是 10 个线程。
这是许多人之间的差异之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)