AndroidプログラミングはActivityで別のActivityデータリストを更新する方法を実現する

2775 ワード

この例では、AndroidプログラミングがActivityで別のActivityデータリストをリフレッシュする操作を実装する方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
Androidプロジェクトでは、2つのacticityがあり、1つは友達リストを表示し、もう1つは会話リストを表示しています.現在の問題は、会話インタフェースに友達追加機能を追加し、友達を追加した後、リアルタイムで友達リストを更新することです.
考えて、二つの方法を探しました.
方法1:リフレッシュするactivity(FriendActivity)を静的変数として宣言し、activity(SessionActivity)でリフレッシュ方法を直接呼び出す
FriendActivityでの静的変数の宣言

public static FriendActivity instance = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  instance = this;
  initViews();
}


SessionActivityでFriendActivityの友達リストの更新方法を直接呼び出せばいいです.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
  if (requestCode == REQUEST_CODE_NEW_CONTACT && resultCode == RESULT_OK) {
    FriendActivity.instance.reFreshFriendList();
  }
}


もちろん、この方法は静的変数を使用しており、メモリをタイムリーに解放する必要があります.
第2の方法:ブロードキャストメカニズムを使用して、SessionActivityが友達を追加する時ブロードキャストを行い、FriendActivityではブロードキャストメッセージを動的に登録してreceiveを行い、メッセージを受け取る時、FriendActivityで自分で更新する
SessionActivityが友達を追加した場合の放送:

//  
Intent intent = new Intent();
intent.setAction("action.refreshFriend");
sendBroadcast(intent);


FriendActivityでのブロードキャストメッセージの動的登録

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   IntentFilter intentFilter = new IntentFilter();
   intentFilter.addAction("action.refreshFriend");
   registerReceiver(mRefreshBroadcastReceiver, intentFilter);
   initViews();
}
// broadcast receiver
private BroadcastReceiver mRefreshBroadcastReceiver = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
     String action = intent.getAction();
     if (action.equals("action.refreshFriend"))
     {
       reFreshFrinedList();
     }
   }
};


これにより、1つのActivityで別のActivityデータリストをリアルタイムでリフレッシュすることができ、より柔軟で便利になります.
最後に、登録を破棄することを忘れないでください.

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(mRefreshBroadcastReceiver);
}


Androidに関する詳細に興味のある方は、「Androidプログラミングのactivity操作テクニックまとめ」、「Android開発入門と進級チュートリアル」、「Androidリソース操作テクニックまとめ」、「Androidデータベース操作テクニックまとめ」、「AndroidビューViewテクニックまとめ」、「Androidコントロール使い方まとめ」を参照してください.
この文書がAndroidプログラムの設計に役立つことを願っています.