7

いくつかのアクティビティを含むアプリケーションがあります。My A Activityには、マニフェストインテントフィルターパラメーターaction.MAINおよびcategory.LAUNCHERがあります。ロードされた後、アクティビティBを呼び出してfinish()Aを呼び出します。これは、もう使用しないためです。

アプリケーションを実行した後、アクティビティAからBに移動してホームボタンを押します。アプリケーションメニューまたはマーケットアプリから再起動すると(ホームボタンを長押しするのではなく)、アクティビティであり、最後のアクティビティBを保存しないでください。

これが最後のアクティビティからアプリケーションを再起動できることは確かに知っています(マーケットの一部のアプリケーションはそれをサポートしています)。これはマニフェストパラメーターによって決定できると思いますが、どれかはわかりません。

私のアプリケーションが最後のアクティビティBから再起動できるように、誰かがそれを実装する方法を知っていますか?

ありがとうayanir

4

3 に答える 3

5

これは古い質問ですが、私はこの問題に苦労していて、SOに関する答えを見つけることができませんでした。だから、ここに私の(非常に初心者の)答えがあります:

いいえ、マニフェストをいじってこれを行うことはできないと思います。ホーム画面からアプリごとに1つの固定アクティビティのみを起動できます。ただし、できることは、その開始点から必要なアクティビティを起動することです。Androidは、最初のアクティビティが表示されないほど迅速に実行できます。

これはハックのように感じますが、開始アクティビティのonResume()メソッドにこのルーティングを実装し、sharedPreferencesを使用して起動するアクティビティを追跡しました。

    final Class<? extends Activity> activityClass;
    SharedPreferences prefs = getSharedPreferences("sharedPrefs", MODE_PRIVATE);
    int activityID = prefs.getInt("whichActivity", -1);
    if (activityID  == Constants.ACTIVITY_ID_MAINSCREEN) {
        activityClass = MainScreen.class;
    } else {
        activityClass = null; return;
    }
    Intent newActivity = new Intent(this, activityClass);
    this.startActivity(newActivity);
于 2011-02-15T15:23:41.180 に答える
1

最近、よく似た質問がたくさんあります。最初にサイトを検索して、質問が重複しないようにすることをお勧めします。

たとえば、以下にリンクされている質問は、開発者が Eclipse デバッガーを使用してアプリケーションを起動していたために、この動作が発生していたことを示しています。別の人は、ランチャー アイコンを手動で押してクリーンに起動するのではなく、Eclipse から直接アプリケーションを起動していたため、この問題を抱えていました。

Android: HOME からの再起動後にタスクのアクティビティ スタックを保持する

于 2010-01-23T12:01:34.500 に答える
0

そのため、Androidでアプリを開発する際に考慮すべきことがいくつかあります。そして、重要なことの1つは、Application Lifecyleです。まだ行っていない場合は、このビデオをお勧めします。何が起こるかというと、アプリケーションはいつでも強制終了およびリセットされる可能性があり、いつでも復元できるようにアプリケーションの状態を保存する必要があります。ランチャーからアプリを開くと、常にアプリを起動するアクティビティに移動します。次のアクティビティにスキップする場合は、その情報を保存してから、コード内のアクティビティにジャンプする必要があります。
また、SavingPersistentStateに関するこのドキュメントもご覧ください。

于 2010-01-27T03:08:30.183 に答える