1

私はいくつかのアクティビティを含むアプリを持っています...ユーザーがアクティビティ スタック A->B->C をナビゲートしているとしましょう。次にホームボタンを押します。ユーザーがウィジェットをクリックすると、アプリの既存/現在のインスタンスを前面に表示したいだけです。アプリの新しいインスタンスは必要ありません。アクティビティ C をフォアグラウンドに戻したい。

launchMode を試してみました"singleTask" | "singleInstance"が、現在のインスタンスをクリアし、アクティビティ A で新しいインスタンスを作成するため、目的の要件は解決しません。

これを解決する方法はありますか?

どうもありがとう!

4

3 に答える 3

2

私はなんとか解決策を見つけました。専用起動モードを設定しました。

android:launchMode="singleInstance"

ユーザーがウィジェットまたはアプリアイコンをもう一度クリックするたびに、デフォルトのアクティビティAが開始されます。アプリを最後の場所で開くにはonCreate()、クラスのメソッド内でMainActivityチェックしisTaskRoot()ます。falseの場合、呼び出しfinish()とアクティビティA(MainActivity)は表示されず、アプリはアクティビティBにあった場所まで開きます。

于 2012-06-26T05:45:01.580 に答える
2

" " を使用するのsingleInstanceはあまり良い考えではありません (多くの理由から)。これがより良い方法です-ウィジェットのインテントハンドラーから:

Intent yourActivity = new Intent(context, YourActivity.class);
yourActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(yourActivity);

アクティビティ C を思い出すために追加する必要はありませんがCLEAR_TOP、A または B を持っていきたい場合は追加する必要があります。

私が投稿しているのは、10 件以上の同様の投稿の間に誰も実際に正しい方法を指摘していないためです。

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP - 最後の段落。

于 2012-08-20T23:57:48.260 に答える
-1

これを意図に追加してみてください

intent.setFlags( Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
于 2012-06-25T03:38:09.607 に答える