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 に答える