首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android - ContentObserver未被调用

Android - ContentObserver未被调用
EN

Stack Overflow用户
提问于 2012-07-15 05:18:14
回答 1查看 1K关注 0票数 2

当contact表更改时,我正在尝试提取Contacts。它工作得很好,但现在不能工作了。它只起作用几次。我使用ContentObserver来获取事件。

以下是注册ContentObserver的代码。我正在将它注册到一个服务上,以便不断地监听。

代码语言:javascript
复制
public void onCreate() {
    super.onCreate();
    context = this;
    db = new Database(context);
    Log.i("**********", "Started Service!");

    Contacts contacts = new Contacts(context);
     context.getContentResolver().registerContentObserver (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, true, contacts);

}

下面是我提取联系人姓名和这个stuf时的代码:

代码语言:javascript
复制
public void onChange(boolean selfChange) {
    super.onChange(selfChange);
    Log.i("********","*****");
    db = new Database(co);
    db.open();
    if (db.Preferences(3) && new CheckConexion().isOnline(co)) {
        Cursor phones = co.getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                null, null, null);

        while (phones.moveToNext()) {
            try {
                name = phones
                        .getString(phones
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                phoneNumber = phones
                        .getString(phones
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                JSONObject jobject = db.select_contact(name, phoneNumber);

                String type1 = jobject.getString("type");

                if (type1.equals("upload")) {
                    if (!(name.equals("") && phoneNumber.equals(""))) {
                        JSONObject jobject2 = new JSONObject();
                        jobject2.put("name", name);
                        jobject2.put("phone", phoneNumber);

                        String value_json = String.valueOf(jobject2);
                        upload(value_json, co);
                        Log.i("********", "Upload on the db" + name + "  "
                                + phoneNumber);
                    }

                } else {
                    return;
                }

            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        db.close();
    } else {
        db.close();
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-16 04:40:35

当服务第一次启动时,Oncreate()只被调用一次。如果您一次又一次地启动服务,那么将直接调用onStartCommand()。因此,我觉得它的观察者注册没有被保留,正在迷失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11487458

复制
相关文章

相似问题

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