Android Loopj Async Http 在 1.4.5 更新后崩溃

2024-02-15

Android Loopj Async Http lib 的新更新已发布,并且发生了很大变化。现在需要手动设置Looper.prepare()否则默认使用同步模式而不是异步模式。我不明白我需要设置它的地方。

Logcat

07-09 08:16:18.775: W/AsyncHttpResponseHandler(6606): Current thread has not called Looper.prepare(). Forcing synchronous mode.

这条消息之后它完全崩溃了

07-09 08:16:18.835: E/AndroidRuntime(6606): FATAL EXCEPTION: AsyncTask #1
07-09 08:16:18.835: E/AndroidRuntime(6606): java.lang.RuntimeException: An error occured while executing doInBackground()
07-09 08:16:18.835: E/AndroidRuntime(6606):     at android.os.AsyncTask$3.done(AsyncTask.java:278)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.lang.Thread.run(Thread.java:864)
07-09 08:16:18.835: E/AndroidRuntime(6606): Caused by: java.lang.IllegalArgumentException: Synchronous ResponseHandler used in AsyncHttpClient. You should create your response handler in a looper thread or use SyncHttpClient instead.
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.loopj.android.http.AsyncHttpClient.sendRequest(AsyncHttpClient.java:1096)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.loopj.android.http.AsyncHttpClient.post(AsyncHttpClient.java:873)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.loopj.android.http.AsyncHttpClient.post(AsyncHttpClient.java:856)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.loopj.android.http.AsyncHttpClient.post(AsyncHttpClient.java:843)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.xxx.app.HttpRequestGCM.post(HttpRequestGCM.java:15)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.xxx.app.ChatActivity$RegisterBackground.sendRegistrationIdToBackend(ChatActivity.java:681)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.xxx.app.ChatActivity$RegisterBackground.doInBackground(ChatActivity.java:660)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at com.xxx.app.ChatActivity$RegisterBackground.doInBackground(ChatActivity.java:1)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at android.os.AsyncTask$2.call(AsyncTask.java:264)
07-09 08:16:18.835: E/AndroidRuntime(6606):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-09 08:16:18.835: E/AndroidRuntime(6606):     ... 5 more

我的 Http 请求类:

import android.os.Looper;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.PersistentCookieStore;
import com.loopj.android.http.RequestParams;

public class HttpRequest {
      public static AsyncHttpClient client = new AsyncHttpClient();

      public static void setCookieStore(PersistentCookieStore cookieStore) {
            client.setCookieStore(cookieStore);
        }

      public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
          Looper.prepare();
          client.get(url, params, responseHandler);
      }

      public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
          Looper.prepare();
          client.post(url, params, responseHandler);
      }
}

谁能帮我?


我遇到了类似的问题,发现在线程中使用 AsyncHttpClient 发出 HTTP 请求会导致问题。

我在线程之外运行了 HTTP 请求,它解决了我的问题。你可以尝试这样的事情:

public class HttpRequest {

  // A SyncHttpClient is an AsyncHttpClient
  public static AsyncHttpClient syncHttpClient= new SyncHttpClient();
  public static AsyncHttpClient asyncHttpClient = new AsyncHttpClient();

  public static void setCookieStore(PersistentCookieStore cookieStore) {
      getClient().setCookieStore(cookieStore);
  }

  public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      getClient().get(url, params, responseHandler);
  }

  public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
      getClient().post(url, params, responseHandler);
  }

  /**
   * @return an async client when calling from the main thread, otherwise a sync client.
   */
  private static AsyncHttpClient getClient()
  {
      // Return the synchronous HTTP client when the thread is not prepared
      if (Looper.myLooper() == null)
          return syncHttpClient;
      return asyncHttpClient;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Loopj Async Http 在 1.4.5 更新后崩溃 的相关文章

  • @EnableTransactionManagement 的范围是什么?

    我试图了解正确的放置位置 EnableTransactionManagement多个 JavaConfig 上下文的情况下的注释 考虑以下场景 我在 JPAConfig java 和 AppConfig java 中有 JPA 配置以及一组
  • Locale.getDefault().getCountry() 返回空字符串

    我正在尝试使用国家 地区代码获取用户语言 例如en US es es 但是当我使用Locale getDefault getCountry 它返回空字符串 虽然它给了我正确的语言Locale getDefault getLanguage N
  • Android 在启动时启动服务,如何在设备重启后重新启动服务类?

    我需要在启动时启动一项服务 我搜索了很多 他们正在谈论广播接收器 由于我是 Android 开发新手 所以我对 Android 上的服务并没有清楚的了解 请提供一些源代码 您的接收者 public class MyReceiver exte
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • jmap - 组织和堆操作会给 jvm 带来开销吗?

    正如标题所述 需要多少开销jmap histo and jmap heap分别带到jvm 如果一个内存敏感的 Java 进程处于OutOfMemory 例如 大约 96 的堆已满 并且无法通过 full gc 清除 其中一项操作是否有可能将
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • 无法在 Android 模拟器中安装 apk

    我正在尝试通过 adb shell 在 ICS 模拟器中安装 apk 从一个站点下载 但出现以下错误 失败 INSTALL FAILED UID CHANGED 可能是什么问题 只需 rm r 有问题的数据目录即可 如果您在安装时遇到此错误
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 带有空白白屏的 WebView

    我在 DialogFragment 中有一个 webview 它使用以下方式显示文档和 PDF它可以进行几次尝试 但如果用户尝试频繁打开和关闭对话框 webview 将显示空白屏幕 我已经尝试了所有的线程link1 https stacko
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 如何更改锁屏自定义文本(所有者信息)?

    我写了程序代码 String message This is test Settings System putString context getContentResolver Settings Secure LOCK PATTERN EN
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • 基于BluetoothChat示例通过蓝牙套接字发送文件

    大家好 根据我之前问的一个问题 我已经能够将文件转换为其他字节数组 以便使用以下写入方法 public void sendFile Log d TAG sending data InputStream inputStream null Ur
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 在 VB.NET 表单之间传递数据

    我有一个带有按钮的表单 单击时会弹出一个对话框表单 在此对话框中 用户需要选择一些数据 完成后单击 确定 按钮 一旦他们单击 确定 按钮 它需要将一个整数返回到之前的形式 我创建了一个对话框表单并尝试通过以下代码调用它 Dim intRes
  • JsTree 与 jquery.validate 冲突

    我有一个 Jstree 填充项目列表 当我单击一个节点时 会使用 ajax 加载部分节点 一切正常 直到我包含 jquery validate 脚本来验证我的表单
  • 无法在 Flutter 中使用 Firebase Auth 进行注册

    我正在为我的应用程序使用 Firebase 我已正确设置所有内容 并且 Firebase Firestore 工作正常 没有任何问题 我能够在那里读取和写入数据 但是当我尝试在 Firebase 中创建用户时 我在调试控制台中收到此消息 I
  • 如何在 nightwatch.js 中使用链接文本单击链接

    假设我的网页上有这些元素 a href dynamic1 One a a href dynamic2 Two a a href dynamic3 Three a 我想点击带有文字的链接Two 如何使用链接文字没有任何独特的属性 如 id 或
  • typescript Symbol.iterator

    我正在尝试创建一个自定义的可迭代对象 这是我的代码的简化示例 class SortedArray Symbol iterator yield 1 yield 2 yield 3 return 4 const testingIterables
  • 在 std::map 中搜索特定值[重复]

    这个问题在这里已经有答案了 可能的重复 检查 std map 中是否存在值 C https stackoverflow com questions 535317 checking value exist in a stdmap c 如何遍历
  • Unity中的LoadScene()函数什么时候改变场景?

    当您调用函数 LoadScene 时 它是立即切换场景 还是只是表示场景需要更改 LoadScene 的文档没有说 我正在使用的具体示例如下所示 LoadScene levelName ItemBox newBox ItemBox Inst
  • 在 Spring 中将 SOAP 1.2 与 WebServiceGatewaySupport 结合使用

    我对 Spring 框架非常陌生 在使用 Spring 创建一个简单的 SOAP 客户端时遇到了一些问题 像一个好的新手一样 我使用 Spring 教程来制作我的 SOAP 客户端 你可以在这里找到它 gt https spring io
  • Unity游戏画面模糊

    我的 Unity 游戏屏幕有问题 当我切换到游戏屏幕时 所有精灵都模糊了 场景视图非常好 但游戏场景很模糊 在 Sprite 的 Unity Inspector 中 您可以将 Generate Mip Map 设置为 false 或者您可以
  • 类叶组件中的 connect() 是 React+Redux 中反模式的标志吗?

    目前正在从事 React Redux 项目 我也在用归一化 https github com gaearon normalizr处理数据结构和reselect https github com reactjs reselect为应用程序组件
  • 如何使用 pip 从 git 子目录进行安装?

    我有一个包含许多文件夹的 git 存储库 其中一个是可使用 pip 安装的 python 模块 如下所示 repo git repo git folder1 repo git folder2 repo git mymodule repo g
  • 如何在 AWK 3.1.3 中按定义的顺序打印数组

    我用 google 搜索了一下 发现在 AWK 4 0 之后 我们可以通过在 for 循环之前放置 PROCINFO sorted in 命令来按定义的顺序打印数组 例如 PROCINFO sorted in ind num asc for
  • 关联类的正确使用

    我是 UML 的新手 我不确定我的图表是否正确 我希望得到比我更有经验的人的建议 我的问题的陈述说 学生学习课程 每个学生可以选修几门课程 每门课程 学习 任何课程都可以有多个学生学习 学生由数字代码识别 有姓名 出生日期和一个或多个国籍
  • 使用 javascript 将数据从一个域发送到另一个域(我可以访问两个网页的 )

    我可以访问两个页面上都有标签 我需要将数据从一个页面发送到另一页面 两个页面都位于不同的域中 页面 A 域 www foo com http www foo com 页面 B 域 www bar com http www bar com 如
  • C++ stringstream >> int 返回零

    我正在编写一个函数来返回数字的反转 即它转换int 1234 to int 4321 这就是我目前所拥有的 include
  • eclipse的jade模板语法支持吗?

    我刚刚开始使用nodejs 模板引擎jade 不幸的是 我的 IDE eclipse 似乎不支持此语法 并且无法正确突出显示 是否可以向 eclipse 添加对 jade 文件的支持 作为 Nodeclipse 工作 www nodecli
  • Google应用程序脚本网络应用程序,如何创建登录按钮?

    我在 Google Drive 中创建了由 Google 电子表格支持的脚本 并将其发布为网络应用程序 设置 执行应用程序为 我 和 谁有权访问该应用程序 任何人 甚至匿名 主页提供电子表格中的 html 内容 基本功能是 随机互联网用户
  • 为什么rotateY(翻转)css3动画在Chrome中闪烁?

    我做了一个jsFiddle http jsfiddle net Grezzo JR2Lu http jsfiddle net Grezzo JR2Lu 当您按下键盘上的 i 键时 图片会翻转以显示一些文本 但在翻转动画期间 在 Chrome
  • 使用 C# 并行下载多个文件

    我想使用 C 并行下载文件 为此 我编写了这段代码 该代码运行良好 但问题是 UI 冻结了 using System using System Collections Generic using System IO using System
  • Android Loopj Async Http 在 1.4.5 更新后崩溃

    Android Loopj Async Http lib 的新更新已发布 并且发生了很大变化 现在需要手动设置Looper prepare 否则默认使用同步模式而不是异步模式 我不明白我需要设置它的地方 Logcat 07 09 08 16