0

私の Android アプリケーション (アプリケーション A)は、ボタンをクリックすると別のアプリケーション (アプリケーション B など) を起動します。

ここで、アプリケーション A が起動されるとすぐにアプリケーション B が起動される「自動開始」機能を実装したいと考えています。このために、チェックボックスを作成し、チェックボックスSharedPreferencesの値を保存するために使用しました。次に、onCreate()アクティビティ A のメソッドで、チェックボックスの値をチェックしてSharedPreferences、値が「true」の場合にアプリケーション B を起動します。

問題:

私が直面している問題は、ユーザーが「アプリケーション B」を終了する (そしてアプリケーション A に戻る) ときonCreate()に、アプリケーション A が再び呼び出され、アプリケーション B が再び開くことです。これにより、無限ループが開始され、アプリケーション B の終了時に、ユーザーはアプリケーション A に戻り、再びアプリケーション B に移動します。

onCreate() が複数回呼び出されることは知っていますが (向きを変更すると、キーボードが開かれ、アクティビティがバックグラウンドになり、システムによって強制終了されます)、これを行うクリーンな方法はありますか?

繰り返しますが、私の要件は、アプリケーション A で「自動開始」チェックボックスがオンになっている場合、アプリケーション A からアプリケーション B を起動することです。

4

1 に答える 1

1

私の提案はonPause、アプリケーション A でアクティビティのメソッドを使用し、「アプリケーション B が呼び出されました」というフラグを設定することです。onCreate次に、このフラグが設定されている場合は、アプリケーション A のアクティビティでアプリケーション B を呼び出してフラグを設定解除しないでください。

アプリケーション B がフォアグラウンドで長すぎると、アプリケーション A がシステムによって一時停止され、フラグがリセットされます。このような場合、フラグを永続的なストレージ (例: SharedPreferences) に格納することをお勧めします。

EDITもう1つ:他のアプリケーションが表示されるため、アクティビティが一時停止されている場合にのみフラグを設定する必要がonPauseあります(すべてが同じクラスで発生するため、これは簡単に判断できます)。

于 2013-07-07T08:22:08.983 に答える