2017-09-28 6 views
3

実際に私は毎分私の場所をサーバーに更新したい、私は非常に多くのリンクを見てきましたが、私は 私はサービスとBroadcastReceiverを停止することができません。私は以下のコードを試しました

リンクからソースコードを使用していますservice.I内の位置を取得するため https://deepshikhapuri.wordpress.com/2016/11/25/service-in-android/
が、私はサービスを停止することができないとBroadcastReceiver

:私は、私は、このリンクを試してみました

このリンクを得ました以下のコードのようにServiceとBroadcastReceiverを開始する

//Starting Service 
    Intent intent = new Intent(getApplicationContext(), GoogleService.class); 
        startService(intent); 

    //Starting BroadcastReceiver 
    registerReceiver(broadcastReceiver, new IntentFilter(GoogleService.str_receiver)); 

私はサービスとBroadcastReceiverを停止するために以下のコードを試しました。

上記のコードは機能しません。 私はサービスと放送受信機を停止することができません これで私を助けてもらえますか?アドバンスで感謝します。

+0

... –

+1

@SardarKhan、logcat 9月28日10をご確認ください。 :49:33.785 883-970 /? D/PerfServiceManager:[PerfService] MESSAGE_TIMEOUT:103 ? I/libPerfService:3:set:3 ? I/libPerfService:3:freq:819000 ? I/libPerfService:3:vcoreレベルを設定:0 ? I/PerfService:PerfServiceNative_getPackName ? I/libPerfService:perfGetLastBoostPid 5392 ? D/PerfServiceManager:[PerfService] getLastBoostPid 5392 ? I/libPerfService:perfGetLastBoostPid 5392 – Naveen

+0

エラーが発生したコードを表示できますか? –

答えて

2

サイクルが完了すると、インテントサービスが自動的に停止します。あなたの最新のlatとlonをグローバル変数に入れてください。

public class LocationService extends IntentService{ 
public Config sharedData; 
public boolean logincase = true; 
ExceptionSave ex; 
Intent broadcastIntent; 
public String journeyState="jr_init"; 
public static boolean performTasks = true; 
private static final String TAG = "com.live.locationservices.LocationServic"; 

public LocationService() { 
    super(TAG); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    if (this.performTasks) { 
//If this variable is true just call your endpoint and send global variable lat and lon to server. 

} 
} 
public class ResponseReceiver extends WakefulBroadcastReceiver { 
    public static final String ACTION_RESP = "com.live.ResponseReceiver.intent.action.MESSAGE_PROCESSED"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
if(LocationServiceDriver.performTasks){ 
//Start your service again 1 mint post dealy 
} 
} 

未登録の活動であなたの放送受信機、あなたのタスクだけで設定LocationServiceDriver.performTasksを行ってdestroy.When =あなたはlogcatに入ったどのようなエラー偽

+0

こんにちはOmarHayat、お返事ありがとうございました。実際には1分ごとに私の位置をサーバーに更新したいです。ボタンをクリックするとブロードキャスト登録の登録を解除したいと思います。アプリケーションのフォアグラウンド、背景、クローズ。私はボタンをクリックしたときに放送登録の登録を解除したいと思っています – Naveen

+0

okeyあなたの位置を更新するフォアグラウンドサービスを使用し、そのサービスでは1ミントのデアリーを使用し、1ミントディレイ後にアップデートを行います。 (受信者!= null){ this.unregisterReceiver(レシーバ); } –

+0

フォアグラウンドサービスは停止しません。そのサービスを停止することはできません。 –

関連する問題