私は解決すべき簡単な質問がありますが、どうやってそれを行うのかは分かりません。Android:サービスからアクティビティにメソッドを呼び出す
TCP接続を探しているスレッドを実行するServiceを拡張するクラスがあります。入力された場合は、入力メッセージが読み込まれます。
入力メッセージが「START」であるならば、私はこの方法で、活動を開始します。
Intent dialogIntent = new Intent(getBaseContext(), VoIPCall.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
dialogIntent.putExtra("inetAddress", clientSocket.getInetAddress());
getApplication().startActivity(dialogIntent);
この活動が実行されているが、サービスが実行され続けます。ある時点で私は "STOP"を予約するかもしれません。以前に作成したアクティビティでメソッドを呼びたいのですが、どのように対話するかはわかりません。
私は静的メソッドを使いたくありません。どうすればいいですか?
は、非常に多くの
EDITをありがとう:私はこれに私のコードを変更:
Intent dialogIntent = new Intent("com.voip.rudy.START_CALL");
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
dialogIntent.putExtra("inetAddress", clientSocket.getInetAddress());
getApplication().startActivity(dialogIntent);
とマニフェストに:
<activity android:name=".VoIPCall">
<intent-filter>
<action android:name="com.voip.rudy.START_CALL" />
<action android:name="com.voip.rudy.STOP_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<category android:name="android.intent.category.DEFAULT" /> was required to avoid having it crash.
EDIT:与えられた
ソリューションを私の問題は修正されましたが、実際にそのクラスのメンバー変数に作用したかったのですtialized。私がコンストラクタを呼び出すと、このアクティビティに戻り、メンバ変数を操作したいと思います。
私が別のアクションを呼び出すと、メンバー変数が初期化されず、何らかの形で新しいアクティビティが作成されたようです。とにかく同じ活動に取り組んで、オブジェクトを無傷で保つことはできますか?
James
あなたのベストベットはおそらく放送を送信しています。 – Falmarri