2017-07-21 8 views
0

Android開発で新しくなったHandler.nowでバックグラウンドサービスを開始します。サービスを停止したいが、サービスはHandlerや他のクラスからは停止しません。 は以下のコードです。 - 以下は、サービス開始と停止を試みるハンドラです。Androidでハンドラを使用したサービスを停止できません

mHandler = new Handler(); 
mRunnable = new Runnable() { 
    @Override 
    public void run() { 
           Log.e("mTrackStatus",String.valueOf(mTrackStatus)); 

           if (mTrackStatus == 1) { 
            Log.e("BACKGROUND=", "background Service Start"); 
            //handler will call after every 10 seconds 
            context.startService(new Intent(context, BackgroundService.class)); 
            mHandler.postDelayed(mRunnable, 10000); 

           } else if (mTrackStatus == 2) { 
            Log.d("StopTracking", "StopTracking"); 
            context.stopService(new Intent(context, BackgroundService.class)); 

            mHandler.removeCallbacks(mRunnable); 

           } 

          } 
         }; 
         // mHandler.postDelayed(mRunnable, 10000); 
         mRunnable.run(); 

私はロトの 1.context.stopService(新しいテント(文脈、BackgroundService.class))のようなメソッドのを試してみました。およびstopSelf();しかし、それは私のために動作しません

+0

mTrackStatusとは何ですか? –

+0

mTrackStatusは、Web APIからのトラックステータスを格納するための変数です。これに対応するサービスは停止していますが、動作しません。 –

+0

これは、mTrackStatusの状態を削除しようとしています。サービスを停止し、成功した場合は必要なときにmTrackStatusを更新してください。 –

答えて

0

私はこの問題で2日間過ごしました。最後に私は問題を解決します。実際には私のBackgrounServiceは次のようにして停止します: - context.stopService(new Intent(context、BackgroundService.class));

私のサービスクラスでonLocationChanged()メソッドを使用し、サービスを停止しようとするとサービスが停止しますが、onLocationChanged()メソッドはバックグラウンドで継続的に実行されます。サービス停止サービスを使用することによってサービスは停止しますが、onLocationChanged()は停止できません。

関連する問題