2

アプリケーションに奇妙な問題があります。

アプリケーションを起動すると、アクティビティが正常に表示されます。

次に、ホーム キーを押して、アクティビティがバックグラウンドになるようにします。onPause()メソッドが呼び出されていることがわかります。

アプリケーションのサービスは、ステータス バーに表示される通知を作成します。

次に通知をクリックすると、アクティビティが表示され、onResume()メソッドが呼び出されていることがわかります。

次にホームキーを押すと、アクティビティがバックグラウンドに入ります。onPause()メソッドが呼び出されていることがわかります。

アプリケーション アイコンをクリックしてアプリケーションを起動すると、一時停止したインスタンスを使用するのではなく、アクティビティの新しいインスタンスが作成されていることがわかります。

ホームキーをもう一度押すと、新しいアクティビティがバックグラウンドに入ります。

アプリケーション アイコンをクリックしてアプリケーションを起動すると、アクティビティの別の新しいインスタンスが作成されます。

その時点で戻るボタンを押すと、代わりに各アクティビティが破棄されます。

私がしたいことは、アクティビティの単一のインスタンスが使用されることです。

何か案は?

4

2 に答える 2

3

アプリの起動時に Android が使用するのと同じインテント フィルターを使用するだけです。

        final Intent notificationIntent = new Intent(context, MessageListActivity.class);
        notificationIntent.setAction(Intent.ACTION_MAIN);
        notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);

通知バーからアクティビティを開くために作成したインテントは、アプリの起動に使用される Android と同じであるため、新しいアクティビティを作成する代わりに、以前に開いたアクティビティが表示されます。

于 2011-03-22T14:45:13.077 に答える
0

Android アクティビティのさまざまな起動モードを確認する必要があります。これは役立つはずです。起動モードは androidmanifest.xml ファイルで設定できます。あなたの解決策は、「singleTop」起動モードを使用することだと思います。

于 2011-03-22T10:11:55.357 に答える