2012-03-23 15 views
2

私は、アプリケーションの実行中にバックグラウンドでいくつかのことを追跡するAndroid Appを開発しています。私はAndroidの初心者なので、何をしたいのか説明しようとします。Androidサービスが10秒後に終了する

セットアップ: MainActivity、TrackerActivity、TrackerService(サービスがwakelockが含まれている)とTrackerServiceWakeupReciever

TrackerServiceが閉じているとき、これが実行されます。

public class TrackerServiceWakeupReciever extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Intent serviceIntent = new Intent(); 
     serviceIntent.setAction("com.example.android.TrackerService"); 
     serviceIntent.putExtra("action", "checkSound"); 
     context.startService(serviceIntent); 
    } 
} 

TrackerActivityからサービスを開始しますコード:アプリケーションを入力するときMainActivityが開始され

Intent serviceIntent = new Intent(); 
serviceIntent.setAction("com.example.android.TrackerService"); 
startService(serviceIntent); 

TrackerActivityはMainActivityから開始されるとき、そしてTrackerServiceはTrackerActivityののonCreateで開始されます。このサービスは、10秒で終了します。その後、TrackerServiceWakeupRecieverが再びサービスを開始し、10秒をもう一度実行してループします。

なぜ10秒で実行されるのですか?私がすぐにMainActivityに戻ってスリープボタンを押すと、サービスが実行され続けることに気がつきました。デバイスがスリープ状態になっても、サービスが実行されています。

この問題を解決するにはどうすればよいですか?それを理解するために1週間を使いました。私はそれがsimpelだと思います:)

ありがとうございます。 Martin

+0

あなたはもっと長く滞在したいと思っていますか? – Rohit

答えて

0

あなたの(他の)BroadcastReceiversのいずれかのどこかにgoAsync()が未処理で実装されている可能性がありますか? goAsync()から取得したPendingResultに対してfinish()を呼び出していない場合は、10秒後にシャットダウンします。ここではドキュメントを参照してください。

BroadcastReceiver

そうでなければ多分あなたが長すぎるために何かをブロックする(一般的に)。

関連する問題