2

3 つのアクティビティ A、B、GraphicsActivity を備えた産業プロセスのリモート コントロールとして使用されるアプリがあります。A はメインのアクティビティで、B はユーザーがアクセスできる追加機能を備えた別の画面です。

独自のスレッドで実行され、産業プロセスを制御する PC との通信を処理する、別のスタンドアロン クラス PCComms もあります。PC は Android に表示する画像を頻繁に送信し、PCComms は GraphicsActivity を起動してユーザーに表示します。ユーザーはボタンをタップして閉じます。

これが問題です。 ユーザーが GraphicsActivity を閉じると、ユーザーがその時点で B にいたとしても、常に A に戻ります。

PCComms はアクティビティではなく、単なるジェネリック クラスであるため、アクティビティ コンテキストが必要です。そのため、グラフィックが表示されたときにアクティビティに画面があった場合に更新されるコンテキスト変数があります。

Intent intent = new Intent(curContext, GraphicsActivity.class);
intent.putExtra("Caption", sGCaption);                                
curContext.startActivity(intent);

... curContext が B のコンテキストであることをデバッガーで確認しました。GraphicsActivity が起動すると、B のonPause()が呼び出されますが、GraphicsActivty finish() es のときに B のライフサイクル イベントは呼び出されません。

関連するマニフェスト エントリ。. .

<activity android:name="A"
   android:launchMode="singleTask"
   android:screenOrientation="portrait">
</activity>
<activity android:name="B"
   android:screenOrientation="portrait"
   android:launchMode="singleInstance">
</activity>
<activity android:name="GraphicsActivity"
   android:screenOrientation="portrait"
   android:launchMode="standard">
</activity>

GraphicsActivity が開いているときに B にいる場合、GraphicsActivity が閉じているときに B に戻るにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

2

B は singleInstance であるため、GraphicsActivity は A タスク スタックに置かれるため、finish() すると A に戻ります。B を標準にする必要があり、B を呼び出すたびに FLAG_ACTIVITY_CLEAR_TOP を使用できます。GraphicsActivity を singleInstance にすることもできます。

于 2013-05-14T19:54:42.043 に答える