首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CONNECTIVITY_ACTION接收器在我注册它的那一刻就响了

CONNECTIVITY_ACTION接收器在我注册它的那一刻就响了
EN

Stack Overflow用户
提问于 2017-01-25 17:10:22
回答 1查看 141关注 0票数 1

在Android 7上,我知道我必须以编程方式注册CONNECTIVITY_ACTION接收器,而不是在清单中注册。

我登记的那一刻,接收器就响了。我怎么才能防止这种情况?

在我的应用程序类中,我这样做:

代码语言:javascript
运行
复制
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        IntentFilter filter = new IntentFilter();
        filter.addAction(android.net.ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(new NetworkUpdateReceiver(), filter);
    }

然后立即调用onReceive方法:

代码语言:javascript
运行
复制
public class NetworkUpdateReceiver extends BroadcastReceiver {

    private Context context;


    @Override
    public void onReceive(Context context, Intent intent) {
        this.context = context;
        Log.e("NetworkUpdateReceiver", "onReceive");

在此之后,它正常工作-每次网络打开或关闭时,我都会得到一个方法调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-21 10:50:25

BroadcastReceiver.java有isInitialStickyBroadcast()方法,所以当您注册接收者时,要忽略连接性更改,您可以编写这样的代码:

代码语言:javascript
运行
复制
public class NetworkUpdateReceiver extends BroadcastReceiver {

private Context context;


@Override
public void onReceive(Context context, Intent intent) {
    this.context = context;
    if (isInitialStickyBroadcast()) {
        Log.i("NetworkUpdateReceiver", "onReceive ignored, sticky");
        return;
    }
    Log.i("NetworkUpdateReceiver", "Actual onReceive");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41857523

复制
相关文章

相似问题

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