0

3 つのアクティビティがあります: アクティビティ A、B、および C アクティビティ A は、ユーザーが自分のアカウントにログインするログイン アクティビティです。アクティビティ B はダッシュボードであり、アクティビティ C には ListView があります。

Androidフォンの場合:アクティビティCで電話のホームボタンを押すと、電話のホーム画面に移動し、アプリを再度起動しようとすると、最初に残したアクティビティCではなくアクティビティAに移動します。

エミュレーターの場合: アクティビティ C で携帯電話のホーム ボタンを押すと、アプリを再度起動しようとするとアクティビティ C に移動します。

また、アクティビティが再開されたときに電話がインターネットにアクセスできるかどうかを確認するために、各アクティビティで onResume をセットアップしました。今の問題は、私がエミュレーターに乗っているのと同じ動作を電話で得ていない理由を理解していないことです。

アプリを残したActivity Cから開始したい.Imがエミュレーターに乗っているのと同じ動作が欲しい.

また、エミュレーターでエラーやクラッシュは発生していません。そのため、問題を追跡するのは困難です。

どうすればよいか教えてください。または、何が問題なのか教えてください。

ありがとうございました!!

4

3 に答える 3

1

アプリの起動にEclipseを使用していないということで、別の解決策を紹介したいと思います。

マニフェストの Activity タグの次のキーを見てください: android:alwaysRetainTaskState http://developer.android.com/guide/topics/manifest/activity-element.html#always

ドキュメントによると、デフォルト値は false です。タスクルートアクティビティ(あなたの場合はランチャーだと思います)でtrueに設定すると、タスクの状態を常に保持し、リセットしないようにシステムに指示します。そのため、プロセスが強制終了された場合でも、再起動後、最新のタスク状態で表示されるはずです。

ただし、このアプローチは次の場合に台無しになるため、注意してください。

  1. タスクのルートではなく指定します。
  2. アプリケーション内のインテントにタスク操作フラグを使用する場合。たとえば、FLAG_ACTIVITY_CLEAR_TASK/FLAG_ACTIVITY_CLEAR_TOP/etc

幸運を

于 2012-09-02T20:54:33.827 に答える
1

まあ、どちらの行動も正常です。そして、ここで何が起こっているのですか:「アクティビティC」OSからホームボタンを押すと、Androidのホーム画面が表示され、OSがアクティビティを破棄するか保持するかを決定します(リソースOSによって異なります)必要)。

エミュレーターでは、他のアクティビティが実行されていないか、ほとんど実行されていない可能性があるため、OS は「アクティビティ C」を破棄せず、アプリケーションを再起動すると、まだ存在する「アクティビティ C」に移動します。

エミュレーターとは対照的に、デバイスは他の多くのアプリケーションとサービスを実行している必要があり、それらをスムーズに実行し続けるにはリソースが必要です。そのため、アクティビティを終了すると、OS はそのアクティビティを破棄し、そのアプリケーションに与えられたリソースを要求します。したがって、アプリケーションを起動すると、最初からアプリケーションが再作成または再起動されます。この場合は「アクティビティ A」です。

したがって、これはほとんど正常な動作であり、心配する必要があります。

詳細については、こちらをご覧ください

于 2012-09-02T20:22:25.733 に答える
0

使用している Eclipse ADT プラグインによっては、Eclipse からアプリケーションを起動しているという理由だけで、電話での動作が正しくない場合があります。「adb install your_app.apk」を試して、画面から手動で起動すると、問題を解決できます。

一般に、説明した動作は設計されたものであるため、(インテント フラグとマニフェスト ステートメントによって) 中断しない場合、システムは希望どおりに動作し、最後のアクティビティとその状態を復元する必要があります。

幸運を

于 2012-09-02T20:18:57.123 に答える