87

私は、最初の Android アプリのリリース ビルドを作成して、数人のテスターに​​送信しようとしています。しかし、私はそれで問題に遭遇しました。アプリを終了し、アイコンから起動して再起動すると、以前の場所に戻るのではなく、アプリ全体が再起動します。これは、退出直後に再入場しても発生します。ただし、ホームボタンを押したまま、最近のアプリのリストから起動しても発生しません。

私はこの問題を抱えている他の人をオンラインで検索しましたが、いくつかありますが、なぜそれが起こっているのかについて明確な答えを持っている人はいません. マニフェストファイルでlaunchmodeをsingletaskまたはsingleinstanceに設定することが古い質問で提案されていますが、それは私を助けませんでした.さらに、私が理解していることから、Androidのデフォルトの動作はタスクの前の状態に戻ることです.このような状況では、それを行うために特別なマニフェスト オプションが必要な理由がわかりません。

この問題の最も奇妙な点は、Eclipse とデバッガーを使用してアプリを携帯電話に配置すると、この問題が発生しないことです。デバッガーに接続する必要さえありません。アプリのデバッグ バージョンがある限り、問題は発生しないようです。しかし、リリース バージョンを使用すると (Eclipse の [Android Tools - Export Signed Application Package] メニュー オプションを使用して作成します)、問題が発生します。何が原因なのかわかる方がいらっしゃいましたら、ご意見をお聞かせいただければ幸いです。

4

15 に答える 15

34

これまでのところ、実際のデバイスへのインストール方法に基づく問題であることがわかりました。具体的には次のとおりです。

  1. APK をデバイスのローカル ストレージにコピー アンド ペーストし、デバイスからインストールすると、署名付きか未署名か bin フォルダーから取得されたかに関係なく、この動作が発生し、アプリはメニュー アイコンから再起動します。

次のいずれかのオプションを使用してインストールすると、この問題は発生しません。

  1. ターミナルまたはコマンド プロンプトを使用して sdk/tools/ に移動し、次のように入力します。

    adb install <FILE PATH OF .APK FILE>
    

    Linux では、次のように入力します。

    ./adb install <FILE PATH OF .APK FILE>
    
  2. Eclipse からプロジェクトを実行するだけです。

ベータ テスト用の正しい APK を配布する方法があれば教えていただければ幸いです。APK をコピーして貼り付けて手動でインストールすると、不正な動作が発生するため、署名付き APK のエクスポートを既に試みました。

アップデート:

私は解決策を見つけました。次の 2 つの手順に従います。

  1. AndroidMainifest.xmlのアクティビティタグ内android:launchMode="singleTask" = trueで、アプリのすべてのアクティビティに対して設定します。
  2. このコードを Launcher アクティビティのonCreate().

    if (!isTaskRoot())
    {
        final Intent intent = getIntent();
        final String intentAction = intent.getAction(); 
        if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {
            finish();
            return;       
        }
    }
    

この動作は Android のバグです。特別なケースではありません。

于 2014-12-30T05:07:27.717 に答える
4

これを最初のアクティビティに追加します。

if (!isTaskRoot()) {
        finish();
        return;
}     
super.onCreate(savedInstanceState);
于 2015-10-21T13:36:26.573 に答える
4

これは Android のデフォルトの動作です。デバッグ ビルドでは、何らかの理由で動作が異なります。android:launchMode="singleInstance"アイコンから起動した後に再起動したい、アクティビティに追加することで解決できます。

于 2013-09-16T17:29:28.287 に答える
0

上記の解決策のすべてが、すべてのデバイスで一貫して機能するわけではありません。一部の Samsung では機能しましたが、すべてではありませんでした。

私の問題の原因は、APK を手動でインストールすることでした。

于 2016-09-01T09:32:20.150 に答える