我正在使用AsyncTask从服务器获取数据。我需要定期更新数据。最好的方法是什么? 最佳答案 您可以使用Timer类来使用TimerTask而不是AsyncTask来安排周期性任务参见:http://developer.android.com/reference/java/util/Timer.htmlhttp://developer.android.com/reference/java/util/TimerTask.html要更新您的UI,您应该遵循这个很好的教程:http://android-developers.blogsp
我正在尝试使用Android的AsyncTask解压缩文件夹。该类(称为Decompress)是Unzip的内部类,其中Unzip本身是一个非Activity类。伪代码是:publicclassUnzip{privateStringindex;privateStringunzipDest;//destinationfileforstoringfolder.privateActivityactivity;privatebooleanresult;//resultofdecompress.publicvoidunzip(Stringloc){DecompressworkThread=new
当人们试图说服我使用RxJava而不是Android的标准AsyncTask结构时,我遇到过几个例子。在我看来,RxJava提供了更多的功能,但相对于AsyncTask而言,它的简洁性有所下降。是否有任何用例比另一种方法更适合一种方法,甚至可以认为RxJava更通用? 最佳答案 当您在Java8上使用RxJava时,可以看到它的全部功能,最好使用像Retrofit这样的库。它允许您简单地将操作链接在一起,并完全控制错误处理。例如,考虑以下代码给定id:指定订单的int和apiClient:订单管理微服务的Retrofit客户端:ap
是否有特定的方法来处理AsyncTask中的失败?据我所知,唯一的方法是使用任务的返回值。如果可能的话,我希望能够提供有关失败的更多详细信息,并且null不是很冗长。理想情况下,它会提供一个onError处理程序,但我认为它没有。classDownloadAsyncTaskextendsAsyncTask{/**thiswouldbecoolifitexisted*/@OverrideprotectedvoidonError(Exceptionex){...}@OverrideprotectedStringdoInBackground(String...params){try{...d
如果我没有向AsyncTask传递任何内容,我该如何实例化、调用和类扩展?此外,我在UI中将TextView设置为计算结果。谢谢,本 最佳答案 在onPostExecute结果中没有参数和结果位图的异步实现示例/***MyAsyncImplementationwithoutdoInBackgroundparams**/privateclassMyAsyncTaskextendsAsyncTask{@OverrideprotectedBitmapdoInBackground(Void...params){Bitmapbitmap;..
Google在AsyncTask中对参数使用varargs的原因是什么??例如方法execute(),doInBackground()和publishProgress()全部使用[Type]...表示法。我认为这使得它“更难”使用,所以它们一定有一些我忽略的充分理由?所以,要么我们没有参数,要么有一个参数,要么有多个参数。让我们分解一下:无参数(简单):Params参数是Void就这样。(方法不能使用它……所以这很安全。)一个参数:在这里,我至少觉得有必要在doInBackground()方法的开头进行检查。例如,这是一个接收Integer并生成Double类型结果的任务:public
我通过将操作拆分为确切数量的可用内核来并行化我的操作,然后启动相同数量的AsyncTask,执行相同的操作,但对数据的不同部分执行。我正在使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,...)以并行执行它们。我想知道每个线程何时完成其工作,以便合并所有结果并执行进一步的操作。我该怎么办? 最佳答案 作为onPostExecute的一部分,您还可以简单地减少共享对象中的计数器。由于onPostExecute在同一个线程(主线程)上运行,您不必担心同步问题。更新1共享对象看起来像这
如何在延迟3秒后启动AsyncTask? 最佳答案 使用其他答案中建议的处理程序,实际代码是:newHandler().postDelayed(newRunnable(){@Overridepublicvoidrun(){newMyAsyncTask().execute();}},3000); 关于Java/android如何在延迟3秒后启动AsyncTask?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow
在我的应用程序中,我需要大量的CRUD内容:从本地SQLite数据库读取记录、插入对象和更新内容。大多数查询都非常简单,即使在UI线程上运行也不会阻塞,但是在这个应用程序中我想采用WindowsPhone模式:out动画立即开始,在动画中在结果交付时开始。我计划使用AsyncTask来完成这项工作,但我注意到Honeycomb(和兼容包)引入了这个新的Loader框架。主要优点似乎是Loader加载的数据在配置更改后仍然存在。LoaderExCommonsware项目在SQLite和框架之间架起了桥梁,但出现了一些问题。资源清理:我使用单个Activity,在onCreate()中创建
在我的应用程序中,我需要大量的CRUD内容:从本地SQLite数据库读取记录、插入对象和更新内容。大多数查询都非常简单,即使在UI线程上运行也不会阻塞,但是在这个应用程序中我想采用WindowsPhone模式:out动画立即开始,在动画中在结果交付时开始。我计划使用AsyncTask来完成这项工作,但我注意到Honeycomb(和兼容包)引入了这个新的Loader框架。主要优点似乎是Loader加载的数据在配置更改后仍然存在。LoaderExCommonsware项目在SQLite和框架之间架起了桥梁,但出现了一些问题。资源清理:我使用单个Activity,在onCreate()中创建