2012-02-24 21 views
2

私は地下鉄ガイドアプリを開発しています。新しい駅に着いたら、通知がポップアップし、メインアクティビティに表示されている地図が更新されます。私はガイドコードをサービスに入れて、ユーザーがガイドされている間に他のアプリを実行できるようにします。しかし、新しい駅に着いたら、主な活動をリフレッシュする必要があります。どのようにして、主な活動のビューにサービスを変更することができますか?アンドロイドサービスとアクティビティとのやり取り

答えて

-1

サービスSとの間でデータを共有するための最良の方法とアクティビティA

が必要とされているものは何でも取得するために、サービスの公開APIを呼び出して、その後、地元の結合パターンを使用してサービスSに結合する活性を有しています。

外部アクティビティBはどのようにしてサービスSと通信して、すべての前処理で完了し、アクティビティAを呼び出す準備ができているかを判断できますか?

リモートバインディングパターンとAIDLを使用します。アクティビティBは、AIDL定義のコールバックをサービスSに登録します。サービスSは、適切なときに呼び出されます。例として、herehereを参照してください。あなたの活動で

+1

あなたはちょうどこれをコピーしましたhttp://stackoverflow.com/a/3066579真剣に? – xmen

0

、あなたは宣言

ReceiverTest mReceiver = new ReceiverTest(); 
IntentFilter filter; 
filter = new IntentFilter("packagename.dosomething"); 
registerReceiver(mReceiver, filter); 

次に、あなたの活動のOnCreateの中でそれを登録し、あなたのサービスでは、放送

public class ReceiverTest extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
    // extras from service 
    int key = intent.getIntExtra("key", 0); 

    //do things here 
    } 
} 

第1の受信機を受信機

を登録する必要がありますイベント

Intent i = new Intent("packagename.dosomething"); 
// You could put the information in extras, then get the value in receiver 
i.putExtra("key", 123); 
context.sendBroadcast(i); 
0

これを行うにはいくつかの方法があります。 サービスをアクティビティにバインドできます。 ブロードキャストメッセージをアクティビティに送信できます(アクティビティはブロードキャストレシーバに登録する必要があります) このトピックについては多くの議論があります。あなたはそれらを通過することができます。

関連する問題