0

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); 
+0

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. –

+0

Ich will nicht gcm wie dinge..Plz bleiben auf meinem Code und Logik, nur wie man das Stoppen der App verhindert – Adi

+0

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. –

Antwort