2

我的应用程序使用自定义布局来显示所有联系信息,包括照片。它旨在处理大量的联系人(在 1000 年代),并且我为联系人照片创建了一个缓存,以使其加载速度更快。但是,当在手机上更新联系人照片时,我遇到了问题。由于我使用的是缓存照片,因此新照片不会出现在应用程序中,直到它被强制关闭然后重新启动。而且我不想使用上次访问时间戳之类的东西来刷新缓存的照片,因为这样做会在每次需要刷新时显着减慢应用程序的速度。

因此,理想情况下,每当联系人照片发生更改时,我都希望得到通知(通过广播接收器之类的东西),然后我可以在缓存中更新该照片。那可能吗?

4

2 回答 2

2

用户CursorLoader来自动更新您的 gui。在这里你可以看到一个教程。显然还有很多其他的例子。

于 2013-04-21T17:58:43.793 回答
1

您可以使用 ContentObserver。

public class ContractObserv extends Activity {

MyContentObserver observer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    observer=new MyContentObserver();
    getApplicationContext().getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, observer);

}


  private class MyContentObserver extends ContentObserver {

        public MyContentObserver() {
            super(null);
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Log.d("Androider", "INSIDE ONcHANGE");
        }

    }}

令人惊奇的是,一旦您运行它并且每次联系人更改时,都会调用 OnChange 直到您取消注册它。

于 2013-06-03T11:07:54.397 回答