2016-07-20 26 views
2

Wie funktioniert Whatsapp Service im Hintergrund in Huawei Handys?Wie Keep Alive Service Android

Ich entfernte WhatsApp von geschützten Anwendungen, aber WhatsApp-Dienst nicht in Bildschirm Auszeit geschlossen.

Ich schreibe kritische App, die jedes Mal ausgeführt werden muss, aber mein Dienst im Bildschirm ausgeschaltet.

Ich möchte Service wie WhatsApp oder AirDroid Service schreiben kann jeder darüber erklären?

Ich meine, wie Service zu schreiben, die speziell nicht in der Nähe von Bildschirm in HUAWEI Telefone ausgeschaltet

Das ist mein Service-Code ist

AppLifeService

public class AppLifeService extends Service { 
@Override 
public IBinder onBind(Intent intent) { 

    return null; 
} 



@Override 
public void onCreate() { 
    super.onCreate(); 

} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    super.onStartCommand(intent, flags, startId); 


    startForeground(5, AppLifeReciever.createNotification(this)); 


    return START_STICKY; 
} 


@Override 
public void onDestroy() { 


    //startService(new Intent(this, AppLifeService.class)); Updated : not need 


    super.onDestroy(); 

} 
} 
+0

Haben Sie nach verschiedenen Versionen von Android OS gesucht? In welcher Version stoppt der Dienst? –

+0

Wenn Ihr Dienst tatsächlich im Vordergrund steht (wie Sie startForeground aufrufen), kann er nicht gelöscht werden, und die nicht abweisbare Benachrichtigung ist ein Beweis dafür. Wann rufst du stopForeground an? – Ramin

Antwort

4

Dienst mit START_STICKY in retrun onStartCommand() wird wieder automatisch gestartet, Sie müssen es nicht erneut instarten

@Override 
    public void onDestroy() { 

     // startService(new Intent(this, AppLifeService.class)); 
     super.onDestroy(); 

    } 
+1

Danke, Beitrag aktualisiert. aber ich spreche speziell über Huawei Handys in der Zeit, die App nicht zu "Protected Apps" -Liste – hamidjahandideh

+0

@hamididahandideh Sory hinzugefügt habe ich keine Ahnung speziell über Huawei Telefone. –

2

Sie benötigen ein Service zu „öffnen Sie“ BroadcastService automatisch zu erstellen, wenn es geschlossen ist.

Zum Beispiel:

BroadcastService

public class MyBroadcastService extends BroadcastReceiver 
{ 

@Override 
    public void onReceive(final Context context, Intent intent) 
    { 
    //do something 
    } 
} 

Service "wieder öffnen" automatisch

public class MyService extends Service 
{ 

@Override 
    public void onCreate() 
    { 
     // Handler will get associated with the current thread, 
     // which is the main thread. 
     super.onCreate(); 
     ctx = this; 

    } 

@Override 
    public IBinder onBind(Intent arg0) 
    { 
     // TODO Auto-generated method stub 

     return null; 
    } 

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) 
    { 
     Log.i(TAG, "onStartCommand"); 
     //Toast.makeText(this, "onStartCommand", Toast.LENGTH_LONG).show(); 

     return START_STICKY; 
    } 

//launch when its closed 
@Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     sendBroadcast(new Intent("YouWillNeverKillMe")); 
     Toast.makeText(this, "YouWillNeverKillMe TOAST!!", Toast.LENGTH_LONG).show(); 
    } 
} 

auf Ihrem AndroidManifest.XML Deklarieren

<receiver android:name=".BroadcastServicesBackground.MyBroadcastService"> 
      <intent-filter> 
       <!--That name (YouWillNeverKillMe) you wrote on Myservice--> 
       <action android:name="YouWillNeverKillMe"/> 

       <data android:scheme="package"/> 
      </intent-filter> 
      <intent-filter> 
       <!--To launch on device boot--> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      </intent-filter> 
     </receiver> 

     <service android:name=".Services.MyService"/> 
+0

danke Ich werde es testen – hamidjahandideh

+0

Ich testete in Huawei Handys und Service schließen ohne OnDestroy aufrufen – hamidjahandideh

3

@Sohail Zahid Antwort sagt Ihnen eine Möglichkeit, einen Service wieder repeatedly zu starten und wieder wenn gestoppt. Aber um einen Dienst am Leben zu erhalten wie ein Lied im Hintergrund zu spielen.

Der beste Ansatz gefunden ist

startForeground(int, Notification) 

wo int-Wert für jede Meldung eindeutig sein muss

Sie müssen ein Notification das Verfahren liefern, die in der Benachrichtigungsleiste angezeigt wird im laufenden Abschnitt. Auf diese Weise wird die App im Hintergrund ohne Unterbrechung am Leben erhalten.