2016-03-20 13 views
1

基本的には私の場所を30分ごとに確認するサービスがあり、場所が変わると基本的な通知がポップアップします。私は、このサービスが必要なのは、私のアプリが閉じられているときです(停止/一時停止中も)。だから私は私の活動で私の奉仕をどこで始めなければならないのか聞いていますか?Android:私のアプリケーションを閉じると私のサービスが始まります

私はFacebook、Instagramと似たものがほしいと思っています。アプリのほとんどはバックグラウンドから実行されていて、通知がポップアップするとアプリが開きます。アプリが開いている間、サービスは何もしてはいけません。

(私のMainActivityでは)onDestroy()メソッドを試しましたが、didntはうまく動作しませんでした。また、onStop()メソッドもどちらも試みませんでした。

私は自分自身を説明していますか?

ありがとうございます!

+0

私はそれが良いアイデアだとは思わない。あなたのサービスのアイデアはあまり役に立たないと誰かがすぐに開いたり閉じたりすることを意味する... – Mohit

+0

いつでもあなたのサービスを実行して場所を取得することができる... – Mohit

答えて

0

定期タスクはAlarmManager(またはJobScheduler)を使用してスケジュールする必要があります。

これは、通常に反応するBroadcastReceiverで行われます。

アクティビティがアクティブな間にこのようなジョブをキャンセルする場合は、AlarmManagerのそれぞれのメソッドをonResumeとに呼び出します。

+0

ありがとうございました!私はこれが道だと思う。私は探していると私は本当に面白いこのポストを見つけたhttp://stackoverflow.com/questions/9869153/android-periodic-gps-location-updates-with-alarmmanager-inside-a-service –

0

あなたはあなたのサービスはアプリを閉じた後に、すべての回のイベントでバックグラウンドで実行する場合は、あなたがあなたのサービスSTICKYを作成する必要があり、あなたはそれを返しOnStartCommand

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("LocalService", "Received start id " + startId + ": " + intent); 
    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 

注ということを行うことができますSTART_SICKYこれは、十分なメモリがある場合にOSにサービスを再作成し、ヌルインテントでonStartCommand()を再度呼び出すように指示します。

application:persistentについても読んでください。これは、「アプリケーションが常に稼働しているかどうか」です。これはより面倒です - システムはシステム内の他の人に影響を与えるあなたのアプリを殺さないようにしようとします、あなたはそれを使用するように注意する必要があります。

関連する問題