2016-08-07 27 views
2

Dies ist eher eine Stilfrage. Aufgrund von Einschränkungen bei Android muss ich jetzt eine Absicht mit einer Aktivität erhalten, die ohne Benutzeroberfläche startet und nicht rendert, einen Dienst mit der Absicht startet und dann sofort beendet . Apps unterscheiden sich jedoch darin, wie sie auf das Starten einer anderen Aktivität reagieren. Beispielsweise werden YouTube-Videos pausiert. Gibt es eine Möglichkeit, diese Wrapper-Aktivität mit so wenig Auswirkungen auf die aktuell laufende App wie möglich zu starten?Starten einer Aktivität ohne Benutzeroberfläche, die einen Dienst startet und beendet, aber die aktuell laufende App nicht unterbrechen möchten

+0

Ich denke, es auf den Dienst abhängig - würde Es ist vernünftig, den Dienst nur beim Booten zu starten und ihn im Hintergrund laufen zu lassen, bis Sie ihn brauchen. –

+0

Es ist ein IntentService, ich habe den Eindruck, dass es keinen Anwendungsfall für diese gibt, wo sie ständig im Hintergrund laufen. –

+0

Außerdem muss ich die Wrapper-Aktivität verwenden, da der Intent-Filter nur angezeigt wird, wenn er in einer Aktivität ist. (Textabsicht bearbeiten) –

Antwort

1

Sie müssen BroadcastReceiver verwenden. Here können Sie ein gutes Tutorial darüber finden.

es aufgeben Sie Manifest

<receiver android:name=".AutoStart "> 

    <intent-filter> 
     <action android:name="com.tutorialspoint.CUSTOM_INTENT"> 
     </action> 
    </intent-filter> 
</receiver> 

BroadcastReceiver Extend

public class AutoStart extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context arg0, Intent arg1) 
    { 
     Log.d("AutoStart","Broadcast received"); 

     Intent intent = new Intent(arg0,YourService.class); 
     arg0.startService(intent); 

    } 
} 

und schließlich können Sie eine Sendung wie folgt senden:

Intent intent = new Intent(); 
intent.setAction("com.tutorialspoint.CUSTOM_INTENT"); 
sendBroadcast(intent);