这更像是“我应该如何设计”而不是“我如何编码”所以我希望这是在正确的地方......我有一个从AsyncTask扩展而来的非常标准的类。我如何最好地安排它来完成许多不同的任务?例如,在使用GAE时,我有标准的获取、插入、删除和更新方法,这些方法都需要异步运行。@OverrideprotectedStringdoInBackground(String...params){if(tipApiService==null){TipBeanApi.Builderbuilder=newTipBeanApi.Builder(AndroidHttp.newCompatibleTransport(),n
这是我的MainActivity...我放了一个按钮,在按钮onclick中我调用了asyncTaskpackagecom.example.asnytaskpro;importjava.util.concurrent.ExecutionException;importandroid.os.Bundle;importandroid.app.Activity;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;p
经过绝望的几天后,我终于创建了几乎可以工作的示例。目标:在onCreate中,我想在AsyncTask中下载和解析XML文件,显示进度对话框,更新UI并关闭对话框。问题:当方向改变时,Activity重新启动并且AsyncTask失去对它的引用。有很多关于它的问题和博客。但我无法找出为什么这个特定的解决方案不起作用。或者android在这种情况下如何处理对话框。状态:当我启动应用程序时,一切正常。我可以旋转设备,我可以通过菜单再次手动启动任务。但是在任务完成并且我再次更改方向后弹出对话框(如预期的那样)并且没有其他任何事情发生。没有进度变化,没有对话关闭。AsyncTask正常完成。代
我正在使用AsyncTask运行后台操作。当然,在已经在后台线程中工作的情况下切换到另一个线程通常没有多大意义,除非另一个线程是UI线程。这就是我想要的:当任务正在运行时,我需要“访问”用户界面,例如显示一个对话框询问用户如何进行。运行后台任务在某个时候停止任务以获取用户反馈切换到UI线程以显示对话框并请求输入切换回后台任务继续工作如何做到这一点?我以为我可以将Runnable与myActivity.runOnUiThread(runnable)一起使用,但这不起作用:privatevoidcopyFiles(){CopyTaskcopyTask=newCopyTask(this);c
这是一个我不确定如何着手的问题。基本上我有一个ASyncTask类,它在后台像往常一样工作。我想在它完成后做点什么。现在,在您跳到前面说“只需使用onPostExecute()”之前,有一个陷阱。我需要运行的方法在Activity中而不是任务类中。在我看来,我有2个选择。答:CustomTasktask=newCustomTask();task.execute(passedParams);//when(task.executeisfinished){doX();}我希望我可以这样做,因为它是如此简单,并且让我可以检查任务何时完成,而不必不断地轮询它的Activity和Activity的
我对自己应用的设计感到困惑。我需要不断轮询服务器以从中获取新数据。我很困惑异步任务以固定间隔运行还是服务在后台运行是更好的选择。线程只会在应用程序运行时运行 最佳答案 你的问题已经有了一些答案,但我认为它值得总结......你需要什么当您想要运行一段需要一些时间才能完成的代码时,您应该始终在与UI线程不同的线程中运行它。您可以通过两种方式实现:使用线程:如果您不需要从新线程到UI线程的大量通信,这是最简单的。如果您需要通信,您可能必须使用Handler来完成它。使用AsyncTask:也在一个单独的线程中运行,并且已经实现了一些与U
这是我第一次使用AsyncTask,对于传递值可能也有点困惑。我有4ArrayLists,其中包含应插入数据库的数据。我希望这个插入在后台完成。通过从我拥有的4个数组列表中获取传递值,将至少有50行要插入到数据库中,并且一次插入1行。有人可以指导我如何做到这一点吗?现在我创建一个扩展AsyncTask的子类InsertData:::privateclassInsertDataextendsAsyncTask{@OverrideprotectedResultdoInBackground(Params...params){//TODOAuto-generatedmethodstubretu
按照教程here我已经设置了一个应该能够从URL下载图像并将其放入ImageView的应用程序。唯一的问题是它找不到findViewById,因为它在Activity类而不是AsyncTask类中。代码在这里:packagecom.example.weather2;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.os.AsyncTask;importandroid.util.Log;importandroid.widge
我大部分时间都在使用Asynctask,但在当前应用程序中下载的数据太大,所以我可以使用其他方法进行后台下载,我实际上不确定处理程序是否用于此目的。 最佳答案 butinthecurrentappthedatadownloadedistoobigsowhatothermethodicanusetodobackgrounddownloading,我不同意你的标题,因为doInBackground是一种专门用于长时间任务的方法。所以AsyncTask是非常强大的工具,也是类型安全的。但还有另一种解决方法。另一种简洁高效的方法是将Inte
我有一些代码在98%的时间都有效,在我自己的测试中100%,所以除了让用户设备遇到此问题外,我无法真正重现该问题。我在onPostExecute()中所做的是设置如下参数:SharedPreferencesprefs=PreferenceManager.getDefaultSharedPreferences(AddProblemActivity.this);prefs.edit().putString("recent_problem_id",result).commit();然后进入下一个Activity:IntentmyIntent=newIntent(AddProblemActiv