Ich habe einen Dienst in Android-App und ich möchte im Hintergrund kontinuierlich laufen sogar App wird von Task Manager.My aktuellen Code funktioniert gut für Pre-Lollipop-Versionen.But In Lollipop ist es nicht funktioniert (In Lollipop stoppt es vom Aufgabenmanager). Wie man das auflöst.Android Hintergrund Service Stop in Lollipop While Swipe von Task-Manager
Service-Klasse
public class MyService extends Service {
int total_time = 1000 * 60 * 60 * 24; // total one day you can change
int peroid_time = 10000; // one hour time is assumed to make request
@Override
public void onCreate() {
}
/** The service is starting, due to a call to startService() */
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
new CountDownTimer(total_time, peroid_time) {
public void onTick(long millisUntilFinished) {
// make request to web and get reponse and show notification.
MakingWebRequest();
Toast.makeText(MyService.this, " Tesitng the data", Toast.LENGTH_LONG).show();
}
public void onFinish() {
Toast.makeText(MyService.this, " ending............", Toast.LENGTH_LONG).show();
//
}
}.start();
// Let it continue running until it is stopped.
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
return START_STICKY;
}
public void MakingWebRequest() {
NotificationManager notif = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(MyService.this);
Notification notify ;
PendingIntent pending = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0);
notify = builder.setContentIntent(pending)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message1))
.setSmallIcon(R.drawable.push).setTicker(excep).setWhen(System.currentTimeMillis())
.setAutoCancel(true).setContentTitle(message1)
.setContentText(message1).build();
// notif.notify(NOTIFICATION, notify);
// notif.notify(0, notify);
startForeground(1, notify);
}
}
/** A client is binding to the service with bindService() */
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
/** Called when all clients have unbound with unbindService() */
@Override
public boolean onUnbind(Intent intent) {
return mAllowRebind;
}
/** Called when a client is binding to the service with bindService()*/
@Override
public void onRebind(Intent intent) {
}
Hauptaktivität
Intent serviceIntent = new Intent(this, MyService.class);
serviceIntent.setPackage(this.getPackageName());
startService(serviceIntent);
Sie möchten also, dass jede Stunde etwas getan wird? Sie brauchen dafür keinen kontinuierlichen Service. Sie feuern jede Stunde einen Service. Google GcmNetworkManager und PeriodicTask. –
Ich will nicht gcm wie dinge..Plz bleiben auf meinem Code und Logik, nur wie man das Stoppen der App verhindert – Adi
Sie können es nicht verhindern. Ich biete Ihnen eine Alternative an, die auch Best Practice ist. GCM! = GcmNetworkManager. GcmNetworkManager = JobScheduler, genau was du brauchst. Es führt regelmäßig eine Aufgabe aus, wenn das Netzwerk verfügbar ist (wenn Sie es eingerichtet haben). Ja, manchmal müssen wir den Code neu schreiben. –