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.getInstance().setIdentity("your_user_id");