1

博物館用のアプリケーションを開発しています。訪問者が使用できる唯一のアプリケーションにする必要があります。

博物館の管理者は、パスワードを要求するボタンでこのアプリケーションを終了することができます。

私はすでに戻るボタンをオーバーライドすることができました。しかし、ホームボタンはまだアクティブです。私はこれを主な活動に使用しました:

<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> 

これにより、ホーム ボタンが押されたときにメイン アクティビティがリロードされます。しかし、閉じるボタンでアプリケーションを閉じようとすると、アプリケーションの最初のインスタンスは閉じられますが、2 番目のインスタンスは閉じられません。管理者はパスワードを再度入力する必要があります。

ユーザーがホーム ボタンを 10 回押した場合、管理者が終了するのは非常に困難になると想像できます。

アプリケーションのすべてのインスタンスを同時に閉じる方法はありますか?

4

1 に答える 1

2

閉じるボタンでアプリケーションを閉じようとすると、アプリケーションの最初のインスタンスは閉じられますが、2 番目のインスタンスは閉じられません

your のインスタンスは 1 つだけApplicationで、 main のインスタンスは 2 つ以上ありますActivity

アクティビティとアプリケーションの違いはご存じだと思いますが、言及することが重要だと思います...

マニフェストでアクティビティの要素起動モード属性を指定することにより、同じアクティビティのインスタンスをアクティビティ スタックに追加することを回避できます。

たとえば、android:launchMode="singleInstance"ドキュメントに従って提供すると、アクティビティのインスタンスを 1 つだけ作成できることが保証されます。onNewIntent()既存のアクティビティの上に同じアクティビティを開始しようとすると、アクティビティ スタック内の何も変更されず、既存のアクティビティ インスタンスでアクティビティ コールバックが呼び出されるだけです。

于 2013-09-18T11:54:28.657 に答える