2011-08-06 25 views
2

私のアプリケーションでは、基本的にバックグラウンドで実行される2つのタスクが必要です。 1つは、いくつかのデータをPHPサーバと同期し、値を送信し、ローカルデータベースを定期的に更新し、もう1つはメインスレッドから要求されたファイルをサーバからダウンロードし、ダウンロードが完了したときにUIに通知することです。Androidでバックグラウンドタスクを実装する方法

アプリがフォアグラウンドになっている間だけ、それらのことをしたいです。ユーザーが別のアプリを開くと、現在のトランザクションを終了し、リソースの消費を停止します。

この時点で、私はそれを実装する方法について少し失われています。私は決してサービスを使いませんでした。サービスが有効な解決策であるかどうかは分かりません。なぜなら、アプリケーションがバックグラウンドになったときにコードが実行されるようにするためにサービスが使用されるからです。

私が考えてきた他の解決策は、定期的に(たとえば20分)サーバーとの同期のためにスレッドを起動する何らかのHandlerを実装することです。ダウンロードが要求されたときにスレッドを起動し、最後にブロードキャストを送信する。

このソリューションについてはどうなりますか?有効ですか?はいの場合、ハンドラーの投稿を取り消すために、アプリケーション(アクティビティではない)がフォアグラウンドで停止したときをどうすれば検出できますか?あなたがサービスを選択した場合は、onHandleIntentを実装する場合、事前に

おかげで

+0

解決策は見つかりましたか?はいの場合は共有できますか? – Prabhakar

答えて

1

私はあなたがそれをする時間の量を待ってループを持つことができますIntentService http://developer.android.com/reference/android/app/IntentService.html

を使用することをお勧めいたしますそれが目を覚ました後、あなたが望むタスクを実行することができます。

@Override 
protected void onHandleIntent(Intent intent) { 
    while(true) { 
     yourBackgroundTask(); 
     // Sleep 
     try { 
      wait(WAIT_TIME); 
     } catch (Exception e) { 
      Log.i(TAG, e.getMessage()); 
      break; 
     } 
    } 
} 
関連する問題