2016-05-13 22 views
2

だから私は起動時に起動している放送受信機を持っています。私は、放送受信機によって収集された情報を使用する活動をしています。放送受信機が呼び出されるたびにアクティビティがリサイクラ・ビューを更新できるようにするには、アクティビティが放送受信機への参照を持たないという問題があります。自分の活動が放送を聞いて自分自身を更新する方法がありますか?アクティビティ放送受信を聞きます

私が考えることができるのは、アクティビティに新しい情報で自分自身を更新しようとする繰り返しのタスクを実行させることだけです。これは私にとっては良い解決策のようには見えません。

答えて

2

BroadcastReceiver - documentation on thisを参照してください。あなたの場合、Programmatically register a broadcast receiverにして、Activityクラスの中からonReceive(Context context, Intent intent)が入るようにします。このようにして、Recyclerviewを必要に応じて更新することができます。次のようなもの:

public void onCreate(Bundle savedInstanceState){ 
    ... 
    IntentFilter filter = new IntentFilter(); 
    //you may want to set whatever filters here... 
    //define the broadcast receiver 
    receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     //here you can update the RecyclerView as you desire using intent's data 
    } 
    }; 
    //register the broadcast receiver 
    registerReceiver(receiver, filter); 
} 

この素晴らしいBroadcastReceiver tutorialをお勧めします。

お楽しみください。

0

BOOT_COMPLETEDに登録された放送受信者は、このアクティビティとは関係がありません。別のコンポーネントです。だから、はい、あなたの活動への参照を持っていないし、定期的なタスクを実行する必要はありません。

私は、収集したデータをデータベースまたは共有プリファレンスに書き込み、アクティビティが実際に画面に表示されているときにそれを読み取ることができます。

SQLiteデータベースを使用している場合、ContentObserverを使用して、基礎となるデータの変更についてアクティビティに通知できます。これはローダーでうまくいきます。

共有設定の場合、あなたのアクティビティにOnSharedPreferenceChangeListenerを登録することができます。

関連する問題