草庐IT

asyncTasks

全部标签

android - 为什么 AsyncTask 的 execute() 必须在 UI 线程上调用,即使 AsyncTask 在 internalHandler 中使用了 Looper.getMainLooper()?

为什么必须在UI线程上调用AsyncTask的方法execute(Params...),如documentation中所述即使AsyncTask在internalHandler中使用了Looper.getMainLooper()?我尝试创建任务并从后台线程调用它的execute(Params...),它工作正常。 最佳答案 WhymusttheAsyncTask'smethodexecute(Params...)invokedontheUIthreadasstatedinthedocumentationeventhoughAsync

android - 关于如何检查 Activity 是否仍然存在的 AsyncTask 最佳实践

AsyncTask完成后,我通常会执行以下操作之一;在我在Activity中定义的回调对象/接口(interface)上调用方法并传递给MyAsyncTask子类构造函数。为AsyncTask提供Handler并在任务完成时调用myHandler.sendMessage()。我想问的是AsyncTask完成后什么才是最佳实践。如果用户在处理任务时按下了主页按钮,则Activity不再处于前台。一旦应用尝试一些UI操作,作为对正在完成的任务的响应,操作系统就会抛出WindowManager$BadTokenException。我当然可以用BadTokenException捕获包围我的UI

android - Flurry 应该用在 Services 和 AsyncTasks 中?

我正在尝试使用FlurryAnalitcs在我的应用程序中。阅读sdk文档后,我在应用程序的每个Activity中执行了以下代码:@OverrideprotectedvoidonStart(){FlurryAgent.onStartSession(this,"xxxxxxxxxxxxxxxxx");super.onStart();}@OverridepublicvoidonStop(){super.onStop();FlurryAgent.onEndSession(this);}我怀疑我的应用程序中有很多AsyncTask和一些IntentServices,在文档中他们说:Insert

android - 如何将 byte[] 类型的参数传递给 AsyncTask 函数?

如何将byte[]类型的参数传给AsynTask类的doInBackground函数?当我做这样的事情时:privateclassBananaextendsAsyncTask{protectedvoiddoInBackground(byte[]...data){mCamera.addCallbackBuffer(byte[]data);}protectedvoidonProgressUpdate(){}protectedvoidonPostExecute(){}}我收到一条错误消息,指出返回类型与doInBackground函数的异步任务不兼容。 最佳答案

java - Android AsyncTask/doInBackground 模式

这更像是“我应该如何设计”而不是“我如何编码”所以我希望这是在正确的地方......我有一个从AsyncTask扩展而来的非常标准的类。我如何最好地安排它来完成许多不同的任务?例如,在使用GAE时,我有标准的获取、插入、删除和更新方法,这些方法都需要异步运行。@OverrideprotectedStringdoInBackground(String...params){if(tipApiService==null){TipBeanApi.Builderbuilder=newTipBeanApi.Builder(AndroidHttp.newCompatibleTransport(),n

android - 全局 AsyncTask 类中未显示进度对话框

这是我的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

android - 带有 ProgressDialog 的 AsyncTask 与方向更改

经过绝望的几天后,我终于创建了几乎可以工作的示例。目标:在onCreate中,我想在AsyncTask中下载和解析XML文件,显示进度对话框,更新UI并关闭对话框。问题:当方向改变时,Activity重新启动并且AsyncTask失去对它的引用。有很多关于它的问题和博客。但我无法找出为什么这个特定的解决方案不起作用。或者android在这种情况下如何处理对话框。状态:当我启动应用程序时,一切正常。我可以旋转设备,我可以通过菜单再次手动启动任务。但是在任务完成并且我再次更改方向后弹出对话框(如预期的那样)并且没有其他任何事情发生。没有进度变化,没有对话关闭。AsyncTask正常完成。代

java - 如何在 AsyncTask 中使用 Runnable.wait()?为什么 AsyncTask 不等待...?

我正在使用AsyncTask运行后台操作。当然,在已经在后台线程中工作的情况下切换到另一个线程通常没有多大意义,除非另一个线程是UI线程。这就是我想要的:当任务正在运行时,我需要“访问”用户界面,例如显示一个对话框询问用户如何进行。运行后台任务在某个时候停止任务以获取用户反馈切换到UI线程以显示对话框并请求输入切换回后台任务继续工作如何做到这一点?我以为我可以将Runnable与myActivity.runOnUiThread(runnable)一起使用,但这不起作用:privatevoidcopyFiles(){CopyTaskcopyTask=newCopyTask(this);c

java - 在 ASyncTask.execute() 之后从 Activity 执行 x()

这是一个我不确定如何着手的问题。基本上我有一个ASyncTask类,它在后台像往常一样工作。我想在它完成后做点什么。现在,在您跳到前面说“只需使用onPostExecute()”之前,有一个陷阱。我需要运行的方法在Activity中而不是任务类中。在我看来,我有2个选择。答:CustomTasktask=newCustomTask();task.execute(passedParams);//when(task.executeisfinished){doX();}我希望我可以这样做,因为它是如此简单,并且让我可以检查任务何时完成,而不必不断地轮询它的Activity和Activity的

android - 服务与 AsyncTask

我对自己应用的设计感到困惑。我需要不断轮询服务器以从中获取新数据。我很困惑异步任务以固定间隔运行还是服务在后台运行是更好的选择。线程只会在应用程序运行时运行 最佳答案 你的问题已经有了一些答案,但我认为它值得总结......你需要什么当您想要运行一段需要一些时间才能完成的代码时,您应该始终在与UI线程不同的线程中运行它。您可以通过两种方式实现:使用线程:如果您不需要从新线程到UI线程的大量通信,这是最简单的。如果您需要通信,您可能必须使用Handler来完成它。使用AsyncTask:也在一个单独的线程中运行,并且已经实现了一些与U