出于某种原因,我的 android ContentObserver 被多次注册。ContentObserver 在我的主 Activity 中被定义为一个内部类。然后在我的 onCreate() 方法中实例化并注册它。
我认为 onCreate() 被多次调用,以及我的主要活动通常被多次实例化。为了防止这种情况,我尝试在我的 Android 清单中添加一个启动模式,但它似乎没有奏效:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleInstance">
在我的 onCreate 中注册之前,我也尝试过取消注册 Oberservers,但我认为因为它是我的主 Activity 的一个新实例,它没有做任何事情。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.contentResolver = this.getApplicationContext().getContentResolver();
this.myObserver = new MyObserver(this.contentResolver);
this.contentResolver.unregisterContentObserver(this.myObserver);
this.contentResolver.registerContentObserver(MainActivity.myObserveUri, true, this.myObserver);
}
private class MyObserver extends ContentObserver {
public MyObserver(ContentResolver contentResolver) {
super(null);
//My Code
}
}
关于如何防止这种情况发生的任何想法?我还在我的主 Activity 中创建了一个可运行的和一个处理程序,我设置为定期运行,它遇到了同样的问题。理想情况下,修复程序也可以解决该问题。我很确定根本问题是我的主要 Activity 被实例化了不止一次,但是由于 launchMode 没有修复它,我不确定下一步该转向哪里。
任何帮助是极大的赞赏。谢谢