Comment rendre service, même en mode veille?
J'ai un service qui est de la mise en œuvre de l'emplacement de l'auditeur. Maintenant, ma question est comment faire en sorte que mon service sera le lieu de capture, même en mode veille. J'ai lu sur d'alarme gestionnaire de
alarm.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtMillis, intervalMillis, operation);
mais comment l'utiliser. voici mon code.. toute aide serait appréciée..
mon service
public class LocationCaptureService extends Service implements LocationListener {
public static int inteval;
java.sql.Timestamp createdTime;
LocationManager LocationMngr;
@Override
public void onCreate() {
inteval=10*1000;
startLocationListener(inteval);
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
private void startLocationListener(int inteval,String nwProvider) {
this.LocationMngr = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
this.LocationMngr.requestLocationUpdates(LocationManager.GPS_PROVIDER, inteval, 0, this);
}
public void onLocationChanged(Location location) {
String status="c",S=null;
double longitude,lattitude,altitude;
g_currentBestLocation = location;
createdTime = new Timestamp (new java.util.Date().getTime());
longitude=location.getLongitude();
lattitude=location.getLatitude();
altitude=location.getAltitude();
//use this
}
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
Je ne pense pas que vous voulez utiliser
merci pour le commentaire.. u peut me dire comment faire pour n'être pas tué jusqu'à ce que mon application est faite. dois-je retourner start_sticky
AlarmManager
à moins que vous avez besoin pour planifier des intervalles spécifiques à la requête pour l'emplacement. Si vous voulez que votre service pour ne pas être tué jusqu'à ce que votre application est en fait b) l'utilisateur indique à votre application d'arrêter, alors vous avez besoin d'une approche différente.merci pour le commentaire.. u peut me dire comment faire pour n'être pas tué jusqu'à ce que mon application est faite. dois-je retourner start_sticky
OriginalL'auteur | 2013-04-11
Vous devez vous connecter pour publier un commentaire.
Si vous voulez vous assurer que votre service n'est pas tué/récupérée par le système d'exploitation vous avez besoin pour en faire un de premier plan de services. Par défaut, tous les services de base, ce qui signifie qu'ils seront tués lors de l'OS a besoin de ressources. Pour plus de détails se référer à cette doc
Fondamentalement, vous devez créer un
Notification
pour votre service et indiquer qu'il est en premier plan. De cette façon, l'utilisateur verra une notification persistante sorte qu'il sait que votre application est en cours d'exécution, et l'OS ne va pas tuer votre service.Voici un exemple simple de la façon de créer une notification (à votre service) et l'avant-plan:
Veuillez noter que l'exemple ci-dessus est rudimentaire et ne contiennent pas de code pour annuler la notification, entre autres choses. Aussi, lorsque votre application n'a plus besoin du service, il doit appeler
stopForeground
afin de supprimer la notification et de permettre à votre service pour être tué, ne pas le faire est un gaspillage de ressources.Un an plus tard, et je suis la réponse à ce commentaire, mieux vaut tard que jamais, je suppose. Vous devrez peut-être tenir un WakeLock pour que votre service pour continuer à fonctionner. Voir developer.android.com/reference/android/os/... pour plus d'info.
un an et un jour 😀 .
OriginalL'auteur Brett Duncavage