1

Android プラットフォーム 1.5

  • 最後にスプラッシュ画面を開き、finish() を呼び出してから、閲覧ページに移動しました。
  • ホームボタンをクリックすると、ブラウズページでアプリケーションが非表示になります(Androidのマルチタスク機能のb / c)
  • Android のデスクトップ起動アプリケーションに再度アクセスすると、スプラッシュ スクリーンから起動します。

Android プラットフォーム 1.6

  • 最後にスプラッシュ画面を開き、finish() を呼び出してから、閲覧ページに移動しました。
  • ホームボタンをクリックすると、ブラウズページでアプリケーションが非表示になります(Androidのマルチタスク機能のb / c)
  • Android のデスクトップ起動アプリケーションに再度アクセスすると、常にスプラッシュ画面ではなくブラウズ画面から開始されるのはなぜですか?

すべてのデータを onsave インスタンスに入れています

@Override
 protected void onSaveInstanceState(Bundle outState) {
  outState.putString(WLConstants.READ_GPS, readGPS );
  outState.putSerializable(WLConstants.SEARCH_CRITERIA, searchCriteria);
  outState.putString(WLConstants.PARAM_WHERE, locationField.getText().toString());
  outState.putBoolean(WLConstants.PARAM_NEAR_ME, rNearMe.isChecked());
  super.onSaveInstanceState(outState);
  Log.v(TAG, "onSaveInstanceState()");
 } 

oncreate メソッドから値を抽出しています

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
if(savedInstanceState != null){
Log.v(TAG,"instace found");
}else{

Log.v(TAG,"instace not found");
}
}

「インスタンスが見つかりました」が呼び出されないということは、何らかの理由でバンドルが返されないことを意味します。

4

1 に答える 1

1

同じことを行う 1.5 および 1.6 デバイスのアプリでこれを試しました。LAUNCHER アクティビティはスプラッシュ スクリーンであり、「メイン」アクティビティを開始finish()してそれ自体を呼び出します。スプラッシュ アクティビティにもnoHistory属性セットがあります。

とにかく、両方のデバイスで、ホームを押してからランチャーアイコンをもう一度押すと、メイン画面が期待どおりに表示されました.

ただし、ランチャー アイコンからプロセスを起動したときにプロセスがまだ生きているかどうかについて、Android が保証しているとは思いません。そのため、タスク スタックが中断したところから開始することも、LAUNCHER アクティビティから開始することもできます。

しかし、あなたの場合、そして今の私の経験では、通常、ランチャーを押すと「ブラウズ」画面にたどり着くはずです。システムが途方もなく過負荷でない限り。

とにかく、インスタンスの状態について:super.onSaveInstanceState(outState)メソッドで最初に呼び出すと違いがあるかどうか試してみましたか?

また、このメソッドは通常、アクティビティがシステムによって強制終了されたときにのみ呼び出されることに注意してください。バックグラウンドに移動するときだけではありません。その場合、あなたがすることは何もないはずです。

于 2010-01-12T13:38:31.967 に答える