Leo*_*hen 13 android android-asynctask
我写了一个AsyncTask,大部分时间它的构造函数被调用并且其doInBackground被调用(0毫秒延迟)之间没有延迟.但是每当在后台进行联系人同步时,我的AsyncTasks的构造函数和doInBackground之间经常会有1-3秒的延迟.在我的情况下,这种延迟是不可接受的.我知道AsyncTask是一个后台线程,这个问题可以通过使用Thread并将其优先级设置得更高来解决.但我想知道的是,我怎么知道是什么导致我的AsyncTask的doInBackground被调用?我使用了adb shell top -m 10,当这个问题发生时,进程使用似乎很正常.
任何帮助表示赞赏.
谢谢
Mil*_*kla 39
我也长期面对这个问题,但现在它已经解决了.请使用以下代码
new AsyncTaskName().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Run Code Online (Sandbox Code Playgroud)
而是代码
new AsyncTaskName().execute();
Run Code Online (Sandbox Code Playgroud)
它会解决后期运行doInbackground的问题.
我们一般不用关心jvm的任务调度。事实上我们也不必费心。
如果应用程序中需要尽快完成某些操作,请在构造函数本身中执行或使用 Asynctask 的 onPre (记住它在 UI 线程上执行)。
但我同意 Android AsyncTask 中的 doInBackgroud 调用有一些可疑之处,我自己亲眼目睹了 doInbackground 在 onPre 之后没有被调用。你也可以用谷歌搜索这个。很多人都曾面对过这个问题。我转而使用传统线程。
我使用传统线程作为核心编写了自己的 Asynctask,并使用 Handler 来模拟 onPre 和 onPost。您也可以选择该选项。
| 归档时间: |
|
| 查看次数: |
5635 次 |
| 最近记录: |