19

シナリオ :

アイコンをクリックしてアプリを開き、何かを行い、アクティビティをナビゲートし、ホームボタンをクリックしてアプリを一時停止します。

ケース 1:

アイコンをもう一度クリックしてアプリを開くと、アプリは最初のアクティビティから再起動します。

ケース 2:

最近開いたアプリ (4.0 ではメニュー ボタンを押してアプリを選択) からアプリを開くと、一時停止状態から開始されます。

アイコンをクリックしてアプリを開くたびにアプリを再起動したくありません。

マニフェスト ファイルを他のアプリと比較しましたが、それらは私のものと似ていますが、動作が異なります (つまり、必要な 2 番目のケースのように)。

編集:

これはここで尋ねられました:ランチャーでアイコンを押して起動すると、アプリが完全に再起動します

しかし、答えはありません:(

4

5 に答える 5

23

見つけた。活動フラグandroid:launchMode="singleTask"にフラグを設定しました。そのコードを削除しました。

onsaveInstanceまた、コード内のすべてのアクティビティにメソッドを追加しましたが、現在は機能しています!

ありがとう :)

于 2013-07-09T11:18:08.810 に答える
-1

スプラッシュ アクティビティ コードをこのコードに置き換えてみてください。

public class Splash extends Activity {

protected boolean _active = true;
protected int _splashTime = 2000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.splash);

    Thread splashTread = new Thread() {
        @Override
        public void run() {
            try {
                int waited = 0;
                while (_active && (waited < _splashTime)) {
                    sleep(100);
                    if (_active) {
                        waited += 100;
                    }
                }
            } catch (InterruptedException e) {
                e.toString();
            } finally {
                Intent intent = new Intent(getApplicationContext(),
                        MainActivity.class);
                startActivity(intent);
                finish();
            }
        }
    };

    splashTread.start();
}

@Override
protected void onPause() {
    super.onPause();
}

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
//      super.onBackPressed();
}
}
于 2013-07-09T10:44:39.370 に答える