2011-08-11 10 views
0

バックグラウンドで定期的に(10秒間)何らかのタスクを実行するアプリケーションを開発しています。このため私はサービスとタイマーを使います。タイマーで実行される実際のジョブは次のとおりです。
1)Phoneから(ContentResolverを使用して)SQLiteデータベースにデータを収集します。
2)HttpPostメソッドを使用してこのデータをリモートサーバーに同期して送信します。Androidのタイマーと期間の変更

問題は次のとおりです:いくつかの繰り返しの後(これらの繰り返しはアプリケーションの実行ごとに変更されます)タイマーは期間を変更し、すべてのタスクを1〜3秒で開始します私の場合は速すぎるので、私は理由を見つけることができません。 誰も前に同様の動作に直面していますか?

タイマータスクの内部でアップロードと収集に異なるスレッドを使用しようとしましたが、問題は解決しませんでした。

ここに私のコードスニペットです:

public class DataForward extends Service{ 
private Context con = getBaseContext(); 
private Timer timer = new Timer(); 
<...> 
@Override 
public void onStart(Intent intent, int startId) { 
     timer.schedule(new TimerTask(){ 
     @Override 
     public void run() { 
      try { 
       updateData(); 
      NetworkManager network = new NetworkManager(con); 
        if(network.isConnectedToTheInternet())   
       uploadData(); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 


     }}, 0, 10000); 
} 
} 
<...> 
} 

それとも実際のタイマーなしでこれを行うための別の方法がありますか? すべてのアイデア?

答えて

0

あなたがサービスにその実行を告げたので、理由は、Android OSがその

を維持するためにinorderをRAM上のがローになる見つけたときに、あなたの

BackgroundTaskの(サービス)が殺されることをそのように可能性、可能性があり

foreGroundアプリケーションが実行されています。また、Free Ramを取得した時点で再びサービスを再起動しますので、

何度もタイマーを再起動している可能性があります。もっとこれを読んで... SERVICE

0

あなたの時間の最初の実行は0ミリ秒で、その後の実行は10のmillis.ButアンドロイドOSの後にあるときに、あなたのサービス開始を再度、内部タスクmanagement.Soのためのあなたのサービスを停止してもよいため

それから、もう一度タイマーをリセットします。あなたの問題の理由はすぐにあなたの仕事を実行します。 最初の実行に最低時間を設定したり、繰り返しアラームを使用することができます。

関連する問題