branch.io loadRewards - 无法在未调用 Looper.prepare() 的线程内创建处理程序

Posted

技术标签:

【中文标题】branch.io loadRewards - 无法在未调用 Looper.prepare() 的线程内创建处理程序【英文标题】:branch.io loadRewards - Can't create handler inside thread that has not called Looper.prepare() 【发布时间】:2018-08-24 05:31:13 【问题描述】:

我正在使用branch.io 进行推荐。当我使用loadRewards() 调用加载奖励时,出现以下异常:

Fatal Exception: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
       at android.os.Handler.(Handler.java:204)
       at android.os.Handler.(Handler.java:118)
       at io.branch.referral.InstallListener.captureInstallReferrer(InstallListener.java:56)
       at io.branch.referral.Branch.registerAppInit(Branch.java:2340)
       at io.branch.referral.Branch.initializeSession(Branch.java:2298)
       at io.branch.referral.Branch.initUserSessionInternal(Branch.java:1286)
       at io.branch.referral.Branch.handleNewRequest(Branch.java:2450)
       at io.branch.referral.Branch.loadRewards(Branch.java:1699)
       at com.musicmuni.riyaz.data.AppDataRepositoryImpl.getReferralCredits(AppDataRepositoryImpl.java:2926)
  .......

查看错误消息,似乎需要从 UI 线程触发调用。但由于这是一个网络调用,这似乎很不寻常。我有什么遗漏的吗?

【问题讨论】:

【参考方案1】:

只有当您从非 UI 线程调用 initSession 时才会发生这种崩溃。您正在未调用 Looper.prepare() 的线程内创建处理程序,所以请确保 initSession 发生在主线程上?

【讨论】:

以上是关于branch.io loadRewards - 无法在未调用 Looper.prepare() 的线程内创建处理程序的主要内容,如果未能解决你的问题,请参考以下文章

Branch.io 事件记录

Branch.io 通过安装传递自定义数据

Branch.io 优先考虑社交媒体链接

Branch.io 自定义事件计数不会增加快速链接

Branch.io 统计

Branch.io 使用时返回 Branch.getInstance().setIdentity("your_user_id");