问题标签 [asynctaskloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - RejectedExecutionException 128 活动线程 AsyncTaskLoader
我已经使用 AsyncTaskLoader 搜索了 RejectedExecutionException 的解决方案,但没有一个有效。它们中的大多数用于 AsyncTask,例如https://github.com/commonsguy/cwac-task/blob/master/src/com/commonsware/cwac/task/AsyncTaskEx.java但 AsyncTaskLoader 有点不同。
我尝试的第一件事是在 onCreateLoader() 返回 CursorLoader 之前执行此操作。
真正要做的就是在 100 之后停止加载程序,这不是我想要的。我试着玩弄不同的值,但这似乎是在浪费时间,因为它没有解决问题。
然后我发现了这个:Submitting tasks to a thread-pool give RejectedExecutionException但我不确定这个答案如何解决这个问题或如何将它与 asynctaskloader 一起使用。
我还尝试创建一个 ThreadPoolExecutor 对象来更改池大小,但我不确定如何同时使用它和 asynctaskLoader。我什至不确定它是否会改变任何东西。
我也尝试过 Thread.sleep() 但这仅适用于我发现的 UI 线程,并且对我认为的后台线程没有任何作用。
我可以针对我正在执行的这种特定情况重新设计应用程序,但加载程序计数只会下降到 26 或 28。我听说某些 Android 版本的最大值为 10,所以我很担心. 希望我不必仅仅在 UI 线程中进行查询,因为我认为它们已经运行得相当快了。只是我显然不能使用 CursorLoader 执行超过 128 个查询。我该如何解决这个问题?我应该怎么办?
这是日志的 Caused by: 部分
android - 从另一个 AsyncTask 的 onPostExecute 启动的 asyncTask 在 API 10 中无法正确执行
设置:
我有一个单例应用程序类,它有一个名为fetchUpdates()
. 此方法由UpdaterService
(一个 IntentService)类调用。fetchUpdates()
方法只需调用 DownloadDataAsyncTask,如果数据成功下载,则在调用UpdateDbAsyncTask
期间调用。onPostExecute
两个 AsyncTask 都驻留在应用程序类中(不确定这是否与问题相关)。
下载DataAsyncTask 类
UpdateDbAsyncTask 类
问题:
在 API 16 中一切正常,但UpdateDbAsyncTask
在 API 10 中的 doInBackground 之后执行暂停。也没有调用 onCancelled(Object) 方法。
LOGCAT 输出
进一步的研究
AsyncTask的线程规则指出:
- AsyncTask 类必须在 UI 线程上加载。这是从 JELLY_BEAN 自动完成的。
- 任务实例必须在 UI 线程上创建。
- 必须在 UI 线程上调用 execute(Params...)。
- ETC...
据我了解(不多,刚开始编程),第一个UpdateDbAsyncTask
完全在两个 API 中执行,因为它不违反任何线程规则。但是第二个要么违反了线程规则之一,导致它在 doInBackground 之后停止执行,要么完全超出了我的理解。
我还发现其他人也有类似的问题。后来在问题中建议
只需在我的代码中始终使用 API15+ 的 AsyncTask 类
但我也不太确定该怎么做。
任何帮助将非常感激。谢谢!
更新 1
仅当我从 Activity 调用UpdaterService
IntentService 类(调用fetchUpdates()
Application 类中的方法)时才会出现问题。我的代码MainActivity
如下:
但是,当我fetchUpdates()
直接使用代码调用时
从 开始MainActivity
,一切都在 API 10 中完美执行。
还要注意,UpdaterService
还使用一个BroadcastReceiver
类调用,该类设置为使用重复警报定期调用。在这种情况下,AsyncTasks 按预期执行......非常奇怪。
更新 2
Streets Of Boston的答案似乎是正确的答案。但是,奇怪的是,以下似乎也有效:
我使用上面的代码从而不是开始IntentService
,问题似乎并没有持续存在。MainActivity
startService(new Intent(this, UpdaterService.class));
android - 使用 AsyncTaskLoader 填充 ListView
我在使用AsyncTaskLoader
. 这是我第一次尝试使用加载器从SQLite数据库填充ListView 。
一切似乎都很好,当我旋转屏幕时,数据被缓存并且不再进行任何查询。但是当我按下主页按钮并再次启动我的应用程序时,数据会再次加载。
注意:Usuario
意味着User
,所以我用用户列表填充ListView。
而且我认为这个片段做得不好。我正在创建一个新的适配器而不是更新数据。
为什么adapter.notifyDataSetChanged()
不工作?
所以,基本上,我的应用程序不会崩溃,但每次我重新启动应用程序时都会重新加载我的所有数据。
编辑:这是我的适配器代码:
android - 从 AsyncTaskLoader 调用方法时,方法不会被调用
事情就是这样,我有一个 AsyncTaskLoader 使用Jsoup从网页加载数据并使用ActiveAndroid将其存储在 SQLite 中。
我的所有解析和数据库方法都在一个名为 Parser 的类中,我不会费心解释原因,但是当我从 Loader 调用 Parser.getList 方法时,它不会被调用。
当我出于某种原因将方法的内容移动到加载器中的 loadInBackground 时,绝对没有任何反应。有人对此有想法吗?
android - AsynLoaderTask 和 ViewPager
我有一个带有 FragmentStatePagerAdapter 的 ViewPager。在 ViewPager 片段的 onViewCreated 方法中,我调用 LoadManager 的 initLoader 方法来启动这样的 AsyncTaskLoader
该片段当然实现了LoaderCallbacks,下面找到相关方法的实现:
我遇到的问题是,对于第一页,一切都按预期工作,但对于后续页面,我看到 onCreateLoader 调用已完成,调用了 AsyncTaskLoader 的 loadInBackground 方法,但未调用 onLoadFinished 因此现在结果交付。
我正在使用 Android 支持库。
有谁知道我做错了什么?
android - Volley 或 ASyncTaskLoader
它们到处告诉我们应该使用 ASyncTaskLoaders,因为它们非常擅长不阻塞 UI 线程。现在有 Volley 可以使用。
我想我们不能同时使用它们,因为 Volley 自己做背景。你怎么看?哪一个更好?
android - 在片段分离时中止加载 AsyncTaskLoader
如何取消正在运行的 AsyncTaskLoader?
参考sais,应该有cancelLoadInBackground()方法可以取消正在运行的任务,但是AsyncTaskLoader中没有这个方法?!!
还有其他两种方法,cancelLoad() 和 stopLoading(),它们都不适合我。
如果有人从当前片段切换到另一个片段,我需要中止任务
asynctaskloader - 异步任务显示错误
我已经构建了一个应用程序 EverestNewsApp RSS Feed,以便在列表视图中显示当前新闻标题,运行此应用程序后出现以下错误
看到您的大力帮助和指导,我会更高兴提前谢谢您
android - AsyncTask Loader、Fragment 和返回的数据
也许我不明白 Android 中 Async Task Loader 和 Fragment 的使用。我在开发人员网站上遵循 Google 的示例(使用删除数据库),但在每种情况下,Fragment 类中的 onLoadFinished 总是返回旧数据。只有当我重新创建片段时,返回的数据才是最新的。错误在哪里?谢谢。
这里是代码。
在片段中
在 AsyncTask 加载器中
在另一个活动中
android - 使用 Robolectric 测试 AsyncTaskLoader
有没有人有幸为 Robolectric 中的 AsyncTaskLoaders 编写单元测试?我为 AsyncTask尝试了此示例的修改版本,但它没有表现出相同的行为。特别onLoadFinished
是从不调用。是否有任何可行的示例来测试使用 Robolectric 的装载机?