从UI线程运行异步任务然后修改UI是Android开发中的一个常见问题,因此我决定花一些时间研究并尝试不同的技术,找到最适合我的方法。我认为重要的因素:应该可靠地工作代码可读性Activity或Fragment应保持尽可能多的线程管理以下是我对各种方法的印象总结(可能是错误的,有些只是意见):异步任务当我第一次进入Android时,我使用的是简单的AsyncTask而没有LoaderManager:遇到间歇性问题,我编写了自己的AsyncTaskManager以使用Activity生命周期管理它们。之前已报告过任务数量和内存泄漏的一些限制。最大的问题是它们使我的代码极其复杂,简化代码违
我试图了解AsyncTaskLoaders的一些细节.这对其他人来说可能是显而易见的,但我找不到一个明确的示例或定义来演示和解释当您覆盖deliverResult()时会发生什么情况。方法。实际交付了什么?这如何与调用对象交互?我可以看到super.deliverResult的使用,它从类中传递一个私有(private)对象。那么,加载器是否会自动知道与“交付的结果”相关联的内容。我完全糊涂了。 最佳答案 看来我参加聚会有点晚了,但无论如何......后台加载和UI线程回调之间的这一中间步骤的主要优点之一onLoadFinished
我有一个SherlockListFragment实现了自定义AsyncTaskLoader。在覆盖的onStartLoading()中,我有:@OverrideprotectedvoidonStartLoading(){if(mData!=null){deliverResult(mData);}else{forceLoad();}}包含的SherlockListFragment在onActivityCreated中启动加载器:@OverridepublicvoidonActivityCreated(BundlesavedInstanceState){super.onActivityCr
我为什么要使用AsyncTaskLoader,什么时候应该使用CursorLoader,反之亦然?在官方page,显示了App-listing示例,它使用AsyncTaskLoader而不是CursorLoader。这两者的优缺点是什么?我在某处读到了关于CursorLoader不关心内容更改(在sqlite中)。谢谢! 最佳答案 AsyncTaskLoader是一个抽象的Loader,它提供了一个AsyncTask来完成工作。因此,您通常扩展AsyncTaskLoader以创建您自己的自定义加载器。使用AsyncTask和使用As
我在我的应用程序中使用了一个加载器,根据我使用这个加载器对联系人执行的查询得到的结果,我执行了一些计算并将它们存储回Sqlite数据库中。我希望这个操作是异步的,但是我对使用异步任务感到困惑,因为我有很多不同的数据类型要返回,或者我应该使用简单的处理程序还是AsyncTaskLoader,我希望它简单,因为我是新手装载机。我试图四处搜索AsyncTaskLoader的示例,但它似乎是火箭科学,在我的场景中,这三者中的任何一个的基本且简单的功能示例会很有帮助。 最佳答案 如果您想使用AsyncTaskLoader,here's给你一个
看LoaderCustomSupport(使用AsyncTaskLoader)和FragmentRetainInstanceSupport(使用Thread,几乎相当于AsyncTask)这两个例子有以下相似之处。加载数据时都不会阻塞UI线程当用户执行屏幕旋转等配置更改时,数据获取线程不会被破坏。当数据获取线程完成数据获取后,它可以更新到正确的FragmentUI但是,还是有区别的。AsyncTaskLoader似乎没有简单的方法可以将中间进度更新到进度条对话框异步任务对此不确定。但Android文档似乎推荐AsyncTaskLoader用于异步数据加载并将最终结果更新到UI?是否有任
我想使用CompatibilityPackage在我的项目中实现AsyncTaskLoader,所以我按照AndroidDocs中的Loader手册进行操作。问题是加载器什么都不做,似乎loadInBackground()从来没有被调用过知道我的代码有什么问题吗?(ExpandableListFragment扩展了Fragment,但不覆盖任何关键方法)谢谢你:-)/**编辑:我意识到(晚了,我是个白痴)AsyncTaskLoader是一个抽象类,所以我需要对它进行子类化...m(__)m我留下这个问题,以防有人从我身后过来,谁知道...publicclassAgendaListFra
我正在尝试在Android上实现加载程序示例,但无法启动加载程序。我正在使用以下代码。它会点击“CreateLoader”,但永远不会到达“Loadingstarted”日志消息。我错过了我需要的电话吗?Activity:publicclassTestingZoneActivityextendsListActivityimplementsLoaderCallbacks>{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.lay
由于Honeycomb和v4兼容库,可以使用AsyncTaskLoader。据我了解,AsyncTaskLoader可以通过屏幕翻转等配置更改存活下来。是否推荐使用AsyncTaskLoader而不是AsyncTask?LoaderManager也进图了吗?但是我还没有找到任何关于如何正确使用AsyncTaskLoader的好例子。文档也没有提供示例。谁能提供一些好的例子。 最佳答案 您可以查看兼容性库的源代码以获取更多信息。FragmentActivity的作用是:保留LoaderManager的列表通过使用onRetainNon