在应用程序类中注册和注销广播接收器

我有一个广播接收器,它在Android Applcation类的onCreate()方法中注册,但如何取消注册

public class MyApplication extends Application {


@Override
public void onCreate() {
    super.onCreate();
    registerReceiver(broadcastReceiver, new IntentFilter("TIMEZONE_CHANGED"));
}

在上面的代码中,我已经在应用程序 onCreate() 方法中注册了它,并且在 Application 类中没有 onDestroy() / onStop() 方法来注销 broadcastReceiver。

如何实现它


答案 1

如果你想在整个应用运行期间进行侦听,则无需取消注册。从文档(截至今天):

只要上下文注册上下文有效,上下文注册接收器就会接收广播。例如,如果在活动上下文中注册,则只要活动未被销毁,就会收到广播。如果向应用程序上下文注册,则只要应用正在运行,就会收到广播。

(https://developer.android.com/guide/components/broadcasts.html)


答案 2

你应该创建一个基本活动。

public class BaseActivity extends AppCompatActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    registerReceiver(broadcastReceiver, new IntentFilter("TIMEZONE_CHANGED"));
}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(broadcastReceiver);
}
}

和主活动扩展基地活动

例:

public class MainActivity extends BaseActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
}

推荐