【问题标题】:ContentObservers onChange is not getting calledContentObserver onChange 没有被调用
【发布时间】:2018-01-01 12:07:29
【问题描述】:

我正在尝试检查 gps 设置是否有变化。未调用 onChange。

contentResolver.registerContentObserver(setting, true, new ContentObserver(handler) {
        @Override
        public boolean deliverSelfNotifications(){
            return true;
        }
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
        Log.d("onChange","in.");
        }

        @Override
        public void onChange(boolean selfChange, Uri uri) {
            super.onChange(selfChange, uri);
            Log.d("onChange","in.");
        }
    });

Handler被调用

    Looper looper = Looper.getMainLooper();
    Handler handler = new Handler(looper);

使用的uri是

Uri 设置 = Settings.Secure.getUriFor(Settings.Secure.LOCATION_MODE);

【问题讨论】:

  • 你读过LOCATION_MODE docs吗?
  • 你的意思是link
  • 我的意思是:“注意:不要依赖于 settings.db 中存在的此值或相应 Uri 的 ContentObserver 通知。使用 MODE_CHANGED_ACTION 接收此值的更改。”我>
  • 你让我大开眼界。
  • 闭着眼睛写任何代码都不是一个好主意... ;-)

标签: android gps settings contentobserver


【解决方案1】:

所以,正如 [pskink]{https://stackoverflow.com/users/2252830/pskink} 指出的那样,这就是我所做的 相反 ob 使用内容观察者使用 BroadcastReceiver 来监听 LocationManager.MODE_CHANGED_ACTION

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多