3

これを探して探して探しました!

アプリ ウィジェットがあり、アプリのボタンを押すと開くことができる構成アクティビティがあります。シナリオは次のとおりです。

アプリを開いた。

ホームボタンでアプリを閉じました。

ウィジェットを追加するために選択しました

ウィジェットを構成しました。

ホーム画面に配置しました

次に、ウィジェットのボタンを使用して構成アクティビティを再度開きます。

戻るを押して新しい構成をキャンセルすると、アプリに戻ります。

押し返すと、ただ家に帰りたい。

基本的に私が求めているのはです。独自のタスク/スタックで構成アクティビティを開始するにはどうすればよいですか?

インテントフィルターを調べましたが、よくわかりません。または、それが含まれているパッケージに関係している可能性があるか、それが不可能なだけかもしれません!

configアクティビティを起動するために使用する意図と関係があると思います

 Intent configIntent = new Intent(this, Configuration.class);
 configIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      
 remoteView.setOnClickPendingIntent(R.id.config, PendingIntent.getActivity(this, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT));

おそらく、'this' をコンテキストとして起動したため、アプリケーション スタックで常に開始されます... しかし、保留中のインテント API は次のとおりです: PendingIntent API 1 "アクティビティは、既存のアクティビティのコンテキスト外で開始されることに注意してください"

そうそう、私はただ輪になってしまうので、今は話すのをやめます!

編集

android:launchMode="singleInstance"マニフェストで試してみたように記載されていました。これは機能しましたが、「startActivityForResult」の動作が正しく機能しなくなりました。(これが構成アクティビティの全体的な理由です)エラーを取得します:

WARN/ActivityManager(59): アクティビティが新しいタスクとして起動されているため、アクティビティをキャンセルしています。

そのため、まだ解決策を見つけていません。

4

2 に答える 2

9

わかりましたそれを並べ替えました:-)必要:

android:taskAffinity=""

マニフェストでは、タスク アフィニティを空の文字列に設定すると、アクティビティがアプリケーションの残りの部分と「関連」していないため、アクティビティを独自のスタックで開始できます。

アップデート

アクティビティを起動するたびに「履歴」に複数回表示されるため、タスク アフィニティを次のように変更しました。そのため、独自のスタックで開始されますが、同じアクティビティの他のインスタンスと共有されます。

また、インテントに追加する必要がありFlag Intent.FLAG_ACTIVITY_NO_HISTORYます:-)これにより、ホームボタンを「押したままにする」と、アプリケーションが履歴に複数回取得されなくなります。

アップデート

FLAG_ACTIVITY_NO_HISTORY が私が望んでいたことをしていないことに気付きました。削除して追加しました:

android:excludeFromRecents="true"

マニフェストのアクティビティ タグにも追加します。アクティビティは、私が望むように動作するようになりました:-)

次のリンク トレイルからこの回答を得ました: Tasks & Back Stack | タスクの管理| 所属タグ

于 2011-03-09T15:16:27.750 に答える
1

AndroidManifest.xml でアプリのアクティビティに android:launchMode="singleInstance" を入れてみてください

于 2011-03-08T16:21:01.043 に答える