草庐IT

asynctasks

全部标签

android - 捕获 AsyncTask 的异常。需要思考

我想在doInBackground中捕获线程的异常并在onPostExcecute中打印错误消息。问题是我在onPostExecute中没有Throwable对象。如何在非UI线程中捕获异常并在UI线程中打印错误消息?publicclassTestTaskextendsAsyncTask>{@OverrideprotectedListdoInBackground(finalVoid...params){try{...returnlistOfString;}catch(SomeCustomExceptione){...returnnull;}}@Overrideprotectedvoid

java - 第二个 AsyncTask 没有执行

我有2个AsyncTask,一个创建套接字连接,另一个使用这些套接字传输对象。我的代码是这样的:try{connectat=true;transmitter=newSocketTransmitter();transmitter.execute();connector=newsocketConnector();connector.execute(owner);this.open();}catch(IOExceptione){但是,从未创建或执行名为socketConnector的AsyncTask。我尝试更改顺序,但未创建或执行发送器...这有什么问题吗? 最

java - 应用程序在使用 AsyncTask 时挂起并挂起所有线程

我正在尝试使用AsyncTask类来获取网站的内容。logcat告诉我W/art:Suspendingallthreadstake:15(oranyothernumber)ms重复。在日志消息打印完成之前,我的应用程序被卡住。日志完成后显示UI。我遵循了教程并仔细检查了我的代码是否与教程相同。过了一会儿,它从网站上记录了几行代码,但仅此而已。我也尝试过不同的网站。这是我的异步任务:publicclassMainActivityextendsAppCompatActivity{publicclassDownloadTaskextendsAsyncTask{@Overrideprotect

android - 制作 AsyncTask 的模式 "procedural"

我在很多地方使用AsyncTask都没有问题。现在使用Honeycomb,所有网络i/o都需要在线程中与UI线程分开,在很多情况下需要AsyncTasks的地方,在同步网络连接非常适合之前(Honeycomb会抛出异常主/用户界面线程上的任何网络I/O)。现在我基本上想得到类似Objectresult=MyAsyncTask().execute()的东西,有好的模式吗?我找到了AsyncTaskAndroid-DesignPatternandReturnValues这是有道理的,也是GWT做事的方式,但不知何故,这听起来像是在摇尾部(然后可能只是我的大脑需要更多的扭曲)。

android - 我如何在 AsyncTask 中从 onPostExecute 发回数据?

我的问题和这个一样InstancevariableofActivitynotbeingsetinonPostExecuteofAsyncTaskorhowtoreturndatafromAsyncTasktomainUIthread但我想将数据发送回同一个调用Activity。不启动Activity的Intent总是重新启动Activity 最佳答案 选项是使用监听器,您可以在其中创建一个您的Activity实现的接口(interface),例如:publicinterfaceAsyncListener{publicvoiddoSt

java - 如何将原始 int 传递给我的 AsyncTask?

我想要的是将一个int变量传递给我的AsyncTask。intposition=5;然后我这样声明我的AsyncTask:classproveAsyncextendsAsyncTask{protectedvoidonPreExecute(){}protectedVoiddoInBackground(int...position){}...但是我得到一个错误,它是这样的:Typeargumentcannotbeofprimitivetype我只能传递一个int[]和Integer变量,但绝不能传递一个int变量,然后我执行我的AsyncTask像这样:newproveAsync().ex

android - 单元测试用例中未调用 AsyncTask onPostExecute()

我看过很多与此相关的帖子,但似乎没有一个与我遇到的问题相同。GetBusinessRulesTask扩展了AsyncTask。当我在单元测试用例中执行此操作时,永远不会调用onPostExecute()。但是,如果我使用真实的客户端代码,则每次都会调用onPostExecute()。不确定我在这里做错了什么。测试用例:packagecom.x.android.test.api;importjava.util.concurrent.CountDownLatch;importandroid.test.ActivityInstrumentationTestCase2;importandroi

android - 当启动 Activity 在它仍在运行时停止/销毁时,AsyncTask 会发生什么?

我见过几个与我的问题几乎相同的问题,但我找不到一个完整的答案来满足我所有的疑问。所以我在这里。假设你有一个内部类的Activity,它扩展了AsyncTask类如下:publicclassMyActivityextendsActivity{privateclassDownloadImageTaskextendsAsyncTask{protectedBitmapdoInBackground(String...urls){returnDownloadImage(urls[0]);}protectedvoidonPostExecute(Bitmapresult){ImageViewimg=(

android - AsyncTask 类中的 getApplicationContext?

我有几个私有(private)AsyncTask方法,我想将它们分解为公共(public)外部类。在我的应用程序中,我有一个扩展Application的公共(public)类,它包含一些我想从应用程序的不同部分访问的共享例程。但是,当我分解AsyncTask类时,我无法再调用getApplicationContext()来获取对我的应用程序库的引用(该类现在不从Activity继承任何内容)。getBaseContext()也会有问题。当实例化并从那里构建时,我是否应该将上下文传递给AsyncTask?不确定那是否安全。importjava.util.ArrayList;importa

Android AsyncTask vs 线程 + 处理程序 vs rxjava

我知道这是被问过很多次的问题。但是,有些事情我从未找到答案。所以希望有人能给我一些启发。我们都知道AsyncTask和Thread是执行后台任务以避免ANR问题的选项。建议asynctask仅用于短时间运行的任务,而线程可用于长时间运行的任务。asynctask不应该用于长任务的原因是众所周知的,这是关于asynctask可能导致的泄漏,因为它可能会在Activity被销毁后继续运行。这是有说服力的。然而,这也导致了一些其他问题:难道线程也独立于Activity生命周期吗?因此,异步任务的风险也可以应用于线程。那么为什么线程适合长时间运行的任务呢?看起来asynctask的风险仅在将其