todas solucion reinicia porque nada las lamentablemente hacer detuvo detienen deja celular aplicaciones aplicacion android service process lifecycle

solucion - Android: crea un servicio que se ejecuta cuando la aplicación se detiene



se detienen todas las aplicaciones y se reinicia (2)

Comience un servicio usando el siguiente código:

startService(new Intent(this, YourServiceClass.class));

¡Ejecuta eso en el Activitie''s onStop () o donde quieras!

¿Cómo se crea un servicio que sigue funcionando cuando se detiene su aplicación? Estoy creando el servicio en un proceso separado en el archivo de manifiesto:

<service android:name="com.example.myservice" android:process=":remoteservice" />

También estoy devolviendo START_STICKY en el comando onStart del Servicio:

@Override public in onStartCommand(Intent intent, int flags, int startId){ return Service.START_STICKY; }


No usaría el atributo android: process - esto realmente ejecuta su servicio en un proceso separado y hace que sea difícil hacer cosas como compartir preferencias. No tendrá que preocuparse de que su servicio muera cuando su aplicación fallezca, el servicio continuará (ese es el objetivo de un servicio). Tampoco quieres un servicio vinculante porque eso comenzará y morirá cuando lo hagan las vinculaciones. Habiendo dicho eso:

<service android:enabled="true" android:exported="true" android:name=".MyService" android:label="@string/my_service_label" android:description="@string/my_service_description" <intent-filter> <action android:name="com.package.name.START_SERVICE" /> </intent-filter> </service>

Puede definir su propia acción con la intención de iniciar el servicio (no puede ser iniciada por el sistema, tiene que ser una actividad). Me gusta configurar "enabled" para que el sistema pueda instanciar mi servicio y "exportar" para que otras aplicaciones puedan enviar intenciones e interactuar con mi servicio. Puede encontrar más sobre esto aquí .

También puede hacer un servicio de larga ejecución que utilice enlaces, si hace esto simplemente agregue y intente para el encuadernador, como por ejemplo:

<action android:name="com.package.name.IRemoteConnection" />

Ahora para comenzar el servicio de su actividad:

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent serviceIntent = new Intent("com.package.name.START_SERVICE"); this.startService(serviceIntent); // You can finish your activity here or keep going... } }

Ahora para el servicio:

public class MyService extends Service { @Override public IBinder onBind(Intent intent) { // This is triggered by the binder action intent. // You can return your binder here if you want... return null; } @Override public void onCreate() { // Called when your service is first created. } @Override public in onStartCommand(Intent intent, int flags, int startId) { // This is triggered by the service action start intent return super.onStartCommand(intent, flags, startId); } }

Ahora tu servicio debería funcionar. Para ayudar con la longevidad, hay algún truco. Haga que se ejecute como un servicio en primer plano (lo hace en el servicio): esto le hará crear un ícono de notificación que se pega en la barra de estado. También mantenga su HEAP light para que su aplicación tenga menos probabilidades de ser asesinado por Android.

Además, el servicio muere al matar el DVM; por lo tanto, si va a Configuración -> Aplicaciones y detiene la aplicación, está matando al DVM y, por lo tanto, se está eliminando el servicio. El hecho de que vea que su aplicación se ejecuta en la configuración no significa que la Actividad se está ejecutando. La actividad y el servicio tienen diferentes ciclos de vida pero pueden compartir un DVM. Solo ten en cuenta que no tienes que matar tu actividad si no es necesario, solo deja que Android lo maneje.

Espero que esto ayude.