2012-02-21 30 views
2

Androidの場合、次のようなシナリオがあります。起動時にサービスが起動するアプリがあります。そのサービスは30分ごとにURLをチェックします。特定の応答を受け取った場合、ブロードキャストを受信して​​処理するブロードキャストを送信します。そのシナリオは私のために素晴らしい仕事です。ブロードキャストレシーバからのアクティビティを開始

私は、ユーザーがアプリケーション(フォアグラウンドからのアプリケーション)の実行を停止した後もサービスを継続したいと思います。

私が直面している問題は、アクティビティがブロードキャストメッセージを受け取ったときに、です。フォアグラウンドに戻るためにアクティビティを取得できません。私はインテントのさまざまな組み合わせを試みましたが、それを理解していませんでした。私は間違って何をしていますか?

私BroadcastReceiverのコードは次のようになります。

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     launchApp(); 
    } 
}; 

private void launchApp() { 
    Intent vukaniActivity = new Intent(this, Vukani.class); 

    // I've tried multiple different flags to no avail. 
    vukaniActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(vukaniActivity); 
} 

答えて

6

したいフラグは以下のとおりです。

vukaniActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
         | Intent.FLAG_ACTIVITY_CLEAR_TOP 
         | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

また、あなたはUIスレッド上で実行していることを確認してください。

runOnUiThread(new Runnable(){ 
    @Override 
    public void run(){ 
    launchApp(); 
    } 
}); 
+0

美しい - 魅力的なように働いた! –

関連する問題