我对何时选择AsyncTask而不是Handler感到困惑。假设我有一些我想每隔n秒运行一次的代码,它将更新UI。为什么我会选择一个而不是另一个? 最佳答案 IMO,AsyncTask旨在提供一种方便、易用的方式来实现Android应用程序的后台处理,而无需过多担心低级细节(线程、消息循环等)。它提供了回调方法,有助于安排任务并在需要时轻松更新UI。但是,重要的是要注意,在使用AsyncTask时,开发人员会受到其限制,这是由于类的作者做出的设计决定造成的。例如我最近发现可以使用AsyncTasks调度的作业数量是有限制的。Hand
在我的Activity中,我使用了一个从AsyncTask扩展的类和一个作为该AsyncTask实例的参数。当我调用mInstanceOfAT.execute("")一切都很好。但是当我按下再次调用AsyncTask的更新按钮时应用程序崩溃(以防网络作业不起作用)。原因然后出现一个异常,上面写着Cannotexecutetask:thetaskhasalreadybeenexecuted(ataskcanbeexecutedonlyonce)我尝试为Asyctask的实例调用cancel(true),但它也不起作用。到目前为止,唯一的解决方案是创建Asyntask的新实例。这是正确的方
由于Honeycomb和v4兼容库,可以使用AsyncTaskLoader。据我了解,AsyncTaskLoader可以通过屏幕翻转等配置更改存活下来。是否推荐使用AsyncTaskLoader而不是AsyncTask?LoaderManager也进图了吗?但是我还没有找到任何关于如何正确使用AsyncTaskLoader的好例子。文档也没有提供示例。谁能提供一些好的例子。 最佳答案 您可以查看兼容性库的源代码以获取更多信息。FragmentActivity的作用是:保留LoaderManager的列表通过使用onRetainNon
这个问题在这里已经有了答案:HowtogettheresultofOnPostExecute()tomainactivitybecauseAsyncTaskisaseparateclass?(17个回答)关闭6年前。我有以下不在Activity内的asynctask类。在Activity中,我正在初始化异步任务,并且我希望异步任务将回调报告回我的Activity。可能吗?还是异步任务必须与Activity在同一个类文件中?protectedvoidonProgressUpdate(Integer...values){super.onProgressUpdate(values);call
我正在将我的代码从使用Handler转换为AsyncTask。后者非常擅长它的工作-在主UI线程中异步更新和处理结果。我不清楚的是,如果AsyncTask#doInBackground中出现问题,如何处理异常。我这样做的方法是有一个错误处理程序并向它发送消息。它工作正常,但它是“正确”的方法还是有更好的选择?我也明白,如果我将错误处理程序定义为一个Activity字段,它应该在UI线程中执行。但是,有时(非常不可预测)我会收到一个异常,指出从Handler#handleMessage触发的代码正在错误的线程上执行。我应该在Activity#onCreate中初始化错误处理程序吗?将ru
AsyncTask是在另一个线程中运行复杂任务的好东西。但是当AsyncTask仍在运行时发生方向更改或其他配置更改时,当前的Activity将被销毁并重新启动。当AsyncTask的实例连接到该Activity时,它会失败并导致“强制关闭”消息窗口。所以,我正在寻找某种“最佳实践”来避免这些错误并防止AsyncTask失败。到目前为止我看到的是:禁用方向更改。(肯定不是你应该处理的方式。)让任务存活并通过onRetainNonConfigurationInstance用新的Activity实例更新它Activity销毁时取消任务,Activity再次创建时重新启动。将任务绑定(bin
我不明白我应该在这里输入什么以及这些争论的最终结果是什么?我到底应该放什么,它到底会去哪里?我需要包括所有3个还是可以包括1、2、20? 最佳答案 Google的Android文档说:异步任务由3个通用类型定义,称为Params、Progress和Result,以及4个步骤,称为onPreExecute、doInBackground、onProgressUpdate和onPostExecute。AsyncTask的泛型类型:异步任务使用的三种类型如下:Params,thetypeoftheparameterssenttothetas
我正在尝试同时运行两个AsyncTask。(平台为Android1.5,HTCHero。)但是,只有第一个被执行。这是一个简单的fragment来描述我的问题:publicclassAndroidJunkextendsActivity{classPrinterTaskextendsAsyncTask{protectedVoiddoInBackground(String...x){while(true){System.out.println(x[0]);try{Thread.sleep(1000);}catch(InterruptedExceptionie){ie.printStackT
我已经对这个问题进行了几个月的调查,并提出了不同的解决方案,但我对此并不满意,因为它们都是大规模的黑客攻击。我仍然无法相信一个设计有缺陷的类进入了框架并且没有人在谈论它,所以我想我一定是遗漏了一些东西。问题在于AsyncTask。根据文档它"allowstoperformbackgroundoperationsandpublishresultsontheUIthreadwithouthavingtomanipulatethreadsand/orhandlers."接下来的例子继续展示一些示例性的showDialog()方法是如何在onPostExecute()中调用的。然而,这对我来说
我有这两个类(class)。我的主要Activity和扩展AsyncTask的Activity,现在在我的主要Activity中,我需要从AsyncTask中的OnPostExecute()获取结果>。如何将结果传递或获取到我的主Activity?这里是示例代码。我的主要Activity。publicclassMainActivityextendsActivity{AasyncTaskasyncTask=newAasyncTask();@OverridepublicvoidonCreate(BundleaBundle){super.onCreate(aBundle);//Calling