android - OnReceive() 方法自动触发

标签 android broadcastreceiver

我在 Activity 中创建了一个接收器,用于在连接互联网时自动调用网络服务。

代码如下

//Create receiver for while network will come auto call webservice

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
        if (!noConnectivity) {
            bar.setVisibility(View.VISIBLE);
            callAuthorizeWebservice();
        } else {
            bar.setVisibility(View.INVISIBLE);
            Toast.makeText(SplashScreenActivity.this, "Check Your Internet connection", Toast.LENGTH_LONG).show();
        }
    }
};

@Override
    protected void onStop() {
        super.onStop();
        unregisterReceiver(mConnReceiver);
    }

    @Override
    protected void onStart() {
        super.onStart();
        this.registerReceiver(this.mConnReceiver,
                new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }

当我打开那个 Activity 时,onReceive() 方法每次都会被调用。
如何避免第一次调用它(在打开该 Activity 时)?

最佳答案

当你第一次注册时发送广播(cf sticky broadcast),一个解决方案是在你的BroadcastReceiver的onReceive回调中使用isInitialStickyBroadcast 了解您是否真的在进行粘性广播并采取相应行动 ( BroadcastReceiver : isInitialStickyBroadcast )

关于android - OnReceive() 方法自动触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35745215/

相关文章:

Android BatteryManager 只返回 1

android - 一个扩展 Activity 和 BroadcastReceiver 的类

android - Android >=4.0 上的捕获媒体按钮(适用于 2.3)

android - 如何监控android中的浏览内容?

javascript - 如何使用钩子(Hook)将值发送到 React Native 中的另一个屏幕?

android - 带有附加功能的地理围栏 PendingIntent

android - 如何在 Android 的 ViewPager 中添加进度条

java - 具有多个用例的onOff开关的SharedPreferences

java - Android Intent 不会发送值

java - 在广播接收器中接收调用 Intent