Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从线程池线程发送广播阻止调用_Android_Android Intent - Fatal编程技术网

Android 从线程池线程发送广播阻止调用

Android 从线程池线程发送广播阻止调用,android,android-intent,Android,Android Intent,我在一个服务中有一个线程池中的线程,它可以做很多事情。最后,它将一些数据插入到提供者中,并发送广播以通知GUI有关新数据的信息 通常发送和接收1-3个广播,然后不再接收广播。当我查看stacktrace线程时,它们都位于sendBroadcast中的系统方法中 从不返回线程的堆栈跟踪: BinderProxy.transact(int,Parcel,Parcel,int)行:不可用[本机方法] ActivityManagerProxy.getProviderMimeType(Uri)行:3296

我在一个服务中有一个线程池中的线程,它可以做很多事情。最后,它将一些数据插入到提供者中,并发送广播以通知GUI有关新数据的信息

通常发送和接收1-3个广播,然后不再接收广播。当我查看stacktrace线程时,它们都位于sendBroadcast中的系统方法中

从不返回线程的堆栈跟踪:

BinderProxy.transact(int,Parcel,Parcel,int)行:不可用[本机方法]
ActivityManagerProxy.getProviderMimeType(Uri)行:3296
ContextImpl$ApplicationContentResolver(ContentResolver).getType(Uri)行:231
Intent.resolveType(ContentResolver)行:3754
Intent.resolveTypeIfRequired(ContentResolver)行:3776
ContextImpl.sendBroadcast(意图)行:969
应用程序(ContextWrapper).发送广播(意图)行:301

收信人登记:

<receiver android:name=".gui.MeasurementReceiver">
  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="content" android:host="compy.product.providers.measurement"/>
  </intent-filter>
</receiver>
现在,对于真正有趣的部分,上面的工作在Galaxy Nexus与ICS和Galaxy Note pre ICS上没有任何问题。但在Galaxy Note、Galaxy SII和Galaxy SIII(带ICS)上以所述方式失败

在Galaxy Nexus上的一个可能相关的注释中,提供程序启动了一次或两次。在有问题的手机上,可以开始进行所有查询。我们也没有找到这种行为的任何原因


有什么想法吗?

好吧,这其实很简单

我们在Mainfest文件中双重注册了ContentProvider

所以,如果你有疯狂的错误,检查你的清单。我不知道为什么那会中断广播

更多信息(编辑):

这个问题的一个线索是,在您尝试对提供程序执行操作的大多数情况下,在LogCat中“加载提供程序‘您的类名’”。这似乎是一个相当罕见的信息,否则。我们在网上只找到了几处关于它的参考资料


所以最后的相关注释是最重要的….

好吧,这其实很简单

我们在Mainfest文件中双重注册了ContentProvider

所以,如果你有疯狂的错误,检查你的清单。我不知道为什么那会中断广播

更多信息(编辑):

这个问题的一个线索是,在您尝试对提供程序执行操作的大多数情况下,在LogCat中“加载提供程序‘您的类名’”。这似乎是一个相当罕见的信息,否则。我们在网上只找到了几处关于它的参考资料

所以最后的相关说明是最重要的

context.sendBroadcast(new Intent(android.content.Intent.ACTION_VIEW).
                      setData(Uri.withAppendedPath(compy.content.Intent.URI_channel, ""+id )));