問題タブ [launchmode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - singleTask launchMode を使用したアプリ購入での Google プレイ?
アプリ内購入をゲームに追加しましたが、アプリ内購入中にホームボタンを押すまでは問題なく動作します。アプリケーションは singleTask モードである必要があります (これは Unity プロジェクトです)。
したがって、ドキュメントから Google のサンプル プロジェクトを取得すると、すべて正常に動作します。追加
次に、アプリ内購入中にホームボタンを押すと、次のような問題が発生します。
- 購入ボタンを押すと、「これはテスト注文です。課金されません」という Google Play の購入画面が表示され、ここでホームを押すと、アプリを再度ロードすると次のように表示されます。
購入エラー: labResult: IAB 結果の Null データ (応答: -1002: Bad response received)
- 「購入に成功しました」と表示されるまで購入を進め、そこでホームボタンを押すと、同じエラーが発生し、アプリ内の製品がゲーム内に取得されず、次に購入しようとするとそれは言う
購入エラー: labResult: アイテムを購入できません (応答: 7: アイテムは既に所有されています)
したがって、明らかに消費されません (次にアプリケーションが起動されるまで):
皆さんは、このような問題にどのように対処していますか? それとも、それらをまったく処理していますか?
android - singleInstance launchMode と新しいスレッドを使用したアクティビティ
私は本当に少し混乱しています。そう言われると
singleInstance起動モードのアクティビティはシングルトン パターンを使用し、そのインスタンスは新しいタスクのルート アクティビティになります。
new taskと表示されている場合、起動アクティビティが新しいスレッドで実行されるということですか? または、Android システムはフラグを使用して、メイン スレッド内のデータ構造を使用してアクティビティ ナビゲーションを内部的に制御します。
android - launchMode = "singleInstance" を使用する場合の例
いつ使用するかの具体的な例を探していますlaunchMode="singleInstance"。私がどこで読んでも、それを使うべき場面はほとんどないと言われています。だから私は例を見たことがないことに驚いています!!
私が見つけた最も近い説明は、次のとおりです。
[it] は、完全に 1 つのアクティビティとして実装されるアプリケーションでのみ使用する必要があります
しかし、もしそうだとすれば、Android の公式ドキュメントではなぜこれほど簡潔に表現されていないのでしょうか。
だから私の質問は:
- これは本当に
singleInstance使用すべき唯一のケースですか? - 上記が を使用する十分な理由ではない状況はあり
singleInstanceますか? singleInstanceを使用することをお勧めする具体的な例- この質問
singleInstanceのような不適切な使用による望ましくない副作用
android - Android: singleTask アクティビティを再開します
ポートで UDP ソケットを使用するアクティビティがあります。ホームボタンを押すと、アクティビティがバックグラウンドになり、OnPause()およびOnStop()メソッドが呼び出されます。UDPパケットを受信したら、アクティビティを再開したいと思います。他の投稿を読んで、私がしなければならないことを理解しています:
android:launchMode="singleTask"アクティビティを(またはsingleInstance)として宣言します。- 次に、アクティビティを再開したいとき:
この解決策は私には機能しません。への呼び出しstartActivity(intent)は、フォアグラウンドでのアクティビティを表示せず、呼び出されませんonResume()。
次のフラグは仕事をしますが、タスクをクリアして新しいタスクを再開したくありません。
android - 「最近のアプリ」スロットからも元の意図を消去するにはどうすればよいですか?
私のアプリは、マニフェストに launch-mode attribute ="singleTop" があり、getIntent() で起動されたインテントを処理します。インテントを処理した後、setIntent(new Intent()); を呼び出します。本来の意図を消す。これにより、アクティビティが再度作成された場合 (たとえば、向きの変更が管理されている場合) に同じインテントを処理することを回避できます。
戻るボタンを押したときにアクティビティが破棄されると問題が発生します。実際、「最近のアプリ」スロットをタップすると、アクティビティが再度作成され、元の意図が再び処理されます。ホーム画面からアプリを再度呼び出すと、本来の意図はありません。
ご了承ください:
- アプリは「最近のアプリ」メニューに表示されている必要があります。
- アクティビティはさらにインテントを受け取り (「singleTop」)、onNewIntent() でそれらを処理できます。
- アクティビティが破棄された場合、インテントを使用して再開できます。「最近のアプリ」スロットからも元の意図を消去するにはどうすればよいですか?
android - スタックの上で別のパッケージを開始するにはどうすればよいですか?
私はこのようなスタックをアプリする必要があります:
A->BC->D
X->Y
Y で getLaunchIntentForPackage("package") を使用して D に到達したいのですが、A に到達します。どの起動モードを使用すればよいですか? できればABCDにsingleTaskを使いたいです。また、D でホームを押して A のアイコンからもう一度起動すると、起動モードによっては D に到達せず (希望する)、A に到達します。DCB はクリアされます。
いろいろやってみましたが、仕組みがよくわかりません。結果としての行動が得られないようです。