在我们的应用程序中,我们已经通知的一致错误之一是我们的LocalBroadcastReceiver
出现了问题(通常是手机上安装了过时的Android版本,这些版本不具备某些功能或其他)。我们从Google Play获得了一个好的堆栈跟踪,但是在我们的主应用中,我们有UncaughtExceptionHandler
将堆栈跟踪等发布到我们正在使用的错误跟踪系统。除了堆栈跟踪,我们还会在应用程序中发送一些个人资料。
问题是,接收器与设置在一个单独的线程中,
<receiver
android:name="com.sixminute.gcm.LocalBroadcastReceiver"
android:process=":remote"
/>
当错误发生时,如果我们检查配置文件,一切都是完全空白的。我假设这是因为接收器的线程与主应用程序完全分开,但我不太确定。
无论设置是什么,我是否可以通过该线程与具有用户所有个人资料信息的主线程进行通信?
答案 0 :(得分:0)
我遇到了一个非常类似的问题,我的问题与接收器定义中android:process=":remote"
有关。当您指定此元素时,Android会使接收器在该过程中运行,该过程可能与当前存储用户配置文件数据的过程相同或不同。
我的应用程序有两个进程 - 一个在启动时自动启动的后台服务和一个包含应用程序UI的独立进程 - 并且有两个独立进程的优点是我们可以杀死并重启服务而不需要用户界面也随之而来。
要解决您的问题,请确保接收器在与包含您正在查找的数据的组件相同的进程上运行,或者为&#34;:remote&#34;配置UncaughtExceptionHandler。处理。执行后者的一种简单方法是创建Application
(如here中所述)并在其中配置默认的ExceptionHandler,而不是在应用的活动和/或服务中配置它。 / p>