2012-01-20 18 views
4

私は、アプリケーションがアイドル状態(ユーザがアクティブではない)であるかどうかをチェックするアラームイベントによって起動されるブロードキャストレシーバを持っています。今度は、アクティビティスタックをリセットして、最初の/ defaultアクティビティにアプリケーションを持って行きたいと思います。新しいアクティビティを開始せずにアクティビティスタックをリセットする

しかし、私はこのような何か場合:

Intent intent = new Intent(context, StartUp.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(intent); 

をその後、私のアプリケーションがフォアグラウンドに来ます。

私はそれを静かに行いたいので、ユーザーは自分のアプリケーションに混乱することはありません。

私の質問は、アクティビティを起動せずにアクティビティスタックをクリアする方法です。

+0

アクティビティスタックをクリアし、アクティビティを起動しない場合は、アプリケーションを閉じるだけです。それ以外の場合は、ユーザーが戻ったときにどのようなアクティビティを表示する必要があります。 –

+0

アクティビティスタックをクリアすると、デフォルト/最初のアクティビティがレンダリングされると仮定します。アプリケーションを閉じることもオプションですが、私は自分のアクティビティが画面に表示されているかどうかを知る必要があります。私はアプリを終了することができない場合は、私は質問に記載されている意図を使用することができます。 – Drejc

答えて

3

あなたのアクティビティがフォアグラウンドになっているかどうかを確認するには、私が試したことはありませんが、here以上が含まれているようです。アプリケーション全体を終了する場合は、次のようにします。

System.runFinalizersOnExit(true); 
System.exit(0); 

これで完了です。これがあなたを助けることを願っています。

+0

完璧な作品....これは私が探していたものです。 – Drejc

0

私の頭の上に、共有の設定などの状態を保存しておきましょう。ユーザーがアプリケーションを再び起動すると、それをクリアしてアクティビティを再起動する必要があります。私。スタックのリセットを遅らせるという概念を使用してください。おそらく考えてみると、SharedPreferences in BroadcastReceiver seems to not update?のような他の意味があります。

関連する問題