在Android中,有没有办法在联系人的照片发生变化时收到通知(通过接收器,听众等)?



我的应用使用自定义布局来显示所有联系人信息,包括照片。它的设计是为了处理大量的联系人(1000多个),我为联系人照片创建了一个缓存,使它们加载得更快。但是,我在手机上更新联系人照片时遇到了问题。由于我使用的是缓存照片,所以新照片在强制关闭然后重新启动之前不会显示在应用程序中。我不想使用last-access时间戳之类的东西来刷新缓存的照片,因为这样做会在每次需要刷新时显著降低应用程序的速度。

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

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

您可以使用contentserver。

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被调用,直到你注销它。

最新更新