首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以检查到底是什么原因导致broadcastreceiver被触发吗?

我可以检查到底是什么原因导致broadcastreceiver被触发吗?
EN

Stack Overflow用户
提问于 2013-08-02 22:09:52
回答 1查看 1.1K关注 0票数 1

我在我的清单中有一个这样注册的BroadcastReceiver:

代码语言:javascript
运行
复制
<receiver
        android:name="xxx.xxx.xxx.LaunchReceiver"
        android:enabled="true"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
        <intent-filter>
            <action android:name="xxx.xxx.xxx.xxx.ACTION_PULSE_SERVER_ALARM" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" />
        </intent-filter>
    </receiver>

问题是,它有时会在没有明显原因的情况下连续触发6-7次。有没有办法检查到底是什么触发了它?

我试过了

代码语言:javascript
运行
复制
Log.d("LaunchReceiver", "intent.getAction(): " + intent.getAction());    
Log.d("LaunchReceiver", "intent.getDataString(): " + intent.getDataString());
Log.d("LaunchReceiver", "intent.getType(): " + intent.getType());

但它们都是空的。

我也试过

代码语言:javascript
运行
复制
NetworkInfo ni = cnnxManager.getActiveNetworkInfo();

Log.d("LaunchReceiver", "ni.getTypeName(): " + ni.getTypeName());
Log.d("LaunchReceiver", "ni.getExtraInfo(): " + ni.getExtraInfo());
Log.d("LaunchReceiver", "ni.getState().name(): " + ni.getState().name());
Log.d("LaunchReceiver", "ni.isFailover(): " + ni.isFailover());

但它们不会改变。

任何帮助都将不胜感激。

谢谢

编辑:它似乎与网络状态的变化有关。当我刚刚从移动网络切换到wifi时,它触发了4次

代码语言:javascript
运行
复制
intent.getAction(): android.net.conn.CONNECTIVITY_CHANGE

然后,它再次触发,没有明显的原因,总共触发了5次。

Edit2:当我从wifi切换到移动网络时,我得到了很多这样的信息:

代码语言:javascript
运行
复制
08-02 16:45:18.074: D/libc(24471): [NET]_files_getaddrinfo+
08-02 16:45:18.074: D/libc(24471): [NET]_files_getaddrinfo-,1
08-02 16:45:18.074: D/libc(24471): [NET]_dns_getaddrinfo+
08-02 16:45:18.074: D/libc(24471): [NET]_dns_getaddrinfo-,3
08-02 16:45:18.074: D/libc(24471): [NET] getaddrinfo-exit,err=7
08-02 16:45:18.074: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.074: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.074: D/libc(24471): [NET] getaddrinfo-exit,err=8
08-02 16:45:18.074: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.074: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.074: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.074: D/libc(24471): [NET] android_getaddrinfo_proxy+
08-02 16:45:18.074: D/libc(24471): [NET]android_getaddrinfo_proxy+
08-02 16:45:18.074: D/libc(24471): [NET] check propname+
08-02 16:45:18.074: D/libc(24471): [NET] check propname-
08-02 16:45:18.084: D/libc(24471): [NET]android_getaddrinfo_proxy-,2
08-02 16:45:18.084: D/libc(24471): [NET] android_getaddrinfo_proxy-
08-02 16:45:18.084: D/libc(24471): [NET]_files_getaddrinfo+
08-02 16:45:18.084: D/libc(24471): [NET]_files_getaddrinfo-,1
08-02 16:45:18.084: D/libc(24471): [NET]_dns_getaddrinfo+
08-02 16:45:18.084: D/libc(24471): [NET]_dns_getaddrinfo-,3
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo-exit,err=7
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.084: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo-exit,err=8
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.084: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.084: D/libc(24471): [NET] android_getaddrinfo_proxy+
08-02 16:45:18.084: D/libc(24471): [NET]android_getaddrinfo_proxy+
08-02 16:45:18.084: D/libc(24471): [NET] check propname+
08-02 16:45:18.084: D/libc(24471): [NET] check propname-
08-02 16:45:18.084: D/libc(24471): [NET]android_getaddrinfo_proxy-,2
08-02 16:45:18.084: D/libc(24471): [NET] android_getaddrinfo_proxy-
08-02 16:45:18.084: D/libc(24471): [NET]_files_getaddrinfo+
08-02 16:45:18.084: D/libc(24471): [NET]_files_getaddrinfo-,1
08-02 16:45:18.084: D/libc(24471): [NET]_dns_getaddrinfo+
08-02 16:45:18.084: D/libc(24471): [NET]_dns_getaddrinfo-,3
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo-exit,err=7
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.084: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo-exit,err=8
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.084: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.084: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.084: D/libc(24471): [NET] android_getaddrinfo_proxy+
08-02 16:45:18.084: D/libc(24471): [NET]android_getaddrinfo_proxy+
08-02 16:45:18.084: D/libc(24471): [NET] check propname+
08-02 16:45:18.084: D/libc(24471): [NET] check propname-
08-02 16:45:18.094: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.094: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.094: D/libc(24471): [NET] getaddrinfo-exit,err=8
08-02 16:45:18.094: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.094: D/libc(24471): [NET] ht 0x66772e776f6c66
08-02 16:45:18.094: D/libc(24471): [NET] getaddrinfo  hn 14, servname NULL, ai_family 0+
08-02 16:45:18.094: D/libc(24471): [NET] android_getaddrinfo_proxy+
08-02 16:45:18.094: D/libc(24471): [NET]android_getaddrinfo_proxy+
08-02 16:45:18.094: D/libc(24471): [NET] check propname+
08-02 16:45:18.094: D/libc(24471): [NET] check propname-
08-02 16:45:18.354: D/libc(24471): [NET]android_getaddrinfo_proxy-,1
08-02 16:45:18.354: D/libc(24471): [NET] getaddrinfo-exit 1
08-02 16:45:18.354: D/libc(24471): [NET]android_getaddrinfo_proxy-,1
08-02 16:45:18.354: D/libc(24471): [NET] getaddrinfo-exit 1
08-02 16:45:48.967: D/Process(24471): killProcess, pid=24471
08-02 16:45:48.967: D/Process(24471): dalvik.system.VMStack.getThreadStackTrace(Native Method)
08-02 16:45:48.967: D/Process(24471): java.lang.Thread.getStackTrace(Thread.java:599)
08-02 16:45:48.967: D/Process(24471): android.os.Process.killProcess(Process.java:1004)
08-02 16:45:48.967: D/Process(24471): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:123)
08-02 16:45:48.967: D/Process(24471): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
08-02 16:45:48.967: D/Process(24471): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
08-02 16:45:48.967: D/Process(24471): dalvik.system.NativeStart.main(Native Method)

这对任何人来说都有意义吗?我认为这可能与使用RemObjects SDK有关。

编辑3:

我已经删除了最后一个意图过滤器,因为它似乎是多余的。仍然在连接更改上得到3个触发器,这是没有意义的。2,一个用于wifi/移动连接,另一个用于连接,这将是有意义的。他们也都说

代码语言:javascript
运行
复制
intent.getAction(): android.net.conn.CONNECTIVITY_CHANGE

代码语言:javascript
运行
复制
ni.getDetailedState().name(): CONNECTED.

奇怪的东西

EN

回答 1

Stack Overflow用户

发布于 2013-08-02 22:27:30

正如你所知道的,当特定意图被击中时,广播接收器会被调用,所以我认为每当连接发生变化时,你定义的所有意图都会被传递,就像如果连接了wifi网络,那么将调用以下意图:

操作android:name="android.net.wifi.supplicant.CONNECTION_CHANGE“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18018995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档