2017-09-28 3 views
3

En fait, je veux mettre à jour mon emplacement pour chaque minute au serveur, j'ai regardé tant de liens mais aucun d'entre eux fonctionne bien pour moi.Finalement Je suis arrivé ce lienJe ne peux pas arrêter le service et BroadcastReceiver.J'ai essayé le code ci-dessous

J'ai essayé ce lien: https://deepshikhapuri.wordpress.com/2016/11/25/service-in-android/
pour obtenir l'emplacement dans un service.I je utilise le code source du lien, mais je ne peux pas en mesure d'arrêter le service et BroadcastReceiver

Je suis Démarrage du service et BroadcastReceiver comme suit code

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

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

J'ai essayé le code ci-dessous pour arrêter le service et BroadcastReceiver.

//Unregistering BroadcastReceiver 
LocalBroadcastManager.getInstance(ServiceLocActivity.this).unregisterReceiver(broadcastReceiver); 

//stopping service 
Intent it = new Intent(getApplicationContext(), GoogleService.class); 
stopService(it); 

Le code ci-dessus ne fonctionne pas. Je ne peux pas arrêter le récepteur de service et de diffusion Pouvez-vous s'il vous plaît m'aider sur this.Thanks à l'avance.

+0

Quelle est l'erreur que vous avez dans logcat .. –

+1

@SardarKhan, s'il vous plaît vérifier la logcat 9 à 28 oct : 49: 33.785 883-970 /? D/PerfServiceManager: [PerfService] MESSAGE_TIMEOUT: 103 ? I/libPerfService: 3: set: 3 ? I/libPerfService: 3: set freq: 819000 ? I/libPerfService: 3: définir le niveau vcore: 0 ? I/PerfService: PerfServiceNative_getPackName ? I/libPerfService: perfGetLastBoostPid 5392 ? D/PerfServiceManager: [PerfService] getLastBoostPid 5392 ? I/libPerfService: perfGetLastBoostPid 5392 – Naveen

+0

pouvez-vous afficher le code où l'erreur se produit. –

Répondre

2

Lorsque le service d'intention s'arrête automatiquement après avoir terminé son cycle. Mettez votre dernier lat et lon dans la variable globale.

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 
} 
} 

récepteur non enregistré votre émission sur l'activité destroy.When que vous avez fait votre tâche qui se trouve juste LocationServiceDriver.performTasks = false

+0

Salut OmarHayat, Merci pour votre réponse.En fait, je veux mettre à jour mon emplacement pour le serveur toutes les 1 minute et je veux désinscrire registre de diffusion quand un clic de bouton. Je veux mettre à jour ma position pour chaque minute même lorsque l'application de premier plan , fond, fermé. Je veux désenregistrer le registre de diffusion quand un bouton clique sur – Naveen

+0

puis utilise le service de premier plan qui met à jour ton emplacement et utilise ce service après 1 minute et fais ta mise à jour après 1 minute. Tu peux désinscrire ton récepteur comme si (receiver! = null) { this.unregisterReceiver (récepteur); } –

+0

Le service de premier plan ne s'arrête jamais même si vous ne pouvez pas arrêter ce service. –