Clear Aplicaciones recientes limpiar la memoria de aplicaciones y mi receptor dejó de funcionar

El receptor de MyApp está trabajando apenas si está en fondo que es:

public class MySmsReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("triggered sms"); if(intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) { Toast.makeText(context, "message Received", Toast.LENGHT_SHORT).show(); } } 

Y mi archivo de manifiesto para el receptor es

  <receiver android:name=".MySmsReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> 

Documento dice que si declaro un receptor en el archivo de manifiesto siempre debe funcionar. Pero en mi caso no es …

Pero cada vez que aclaro mis aplicaciones recientes, pasándolas, simplemente dejé de funcionar. Y después de ir a taskmanager y vi que MyApps forcestop ser discapacitados como abajo Captura de pantalla de mi aplicación en taskmanager

Y me di cuenta de que algunas aplicaciones como watsapp y fb siempre se mantiene en la memoria estoy diciendo que este bcoz después de la swiping de las aplicaciones recientes claro todavía el administrador de tareas tiene el estado followig como a continuación

Fb estado en el administrador de tareas

y Estado watsapp en el administrador de tareas

¿Cómo puedo hacer esto en mi aplicación .. ¿qué hará mi aplicación para comportarse como otras aplicaciones de terceros como watspp y facebook … ¿cómo puedo hacer que mi aplicación para estar en la memoria siempre estoy pidiendo esto entonces sólo mi receptor siempre funcionará .. Si estoy equivocado, entonces dame una solución para hacer esto …

He estado buscando esto mucho y todavía no puedo encontrar la solución … ¿Estoy preguntando mal? O realmente hay una manera de hacerlo? Por favor, alguien me ayude … Esto me hace una semana! Espero que he explicado mi problema aquí si no me preguntan que te voy a dar respuesta inmediata.

En algunos dispositivos Huawei (y algunos dispositivos LG y Xiaomi) debe agregar su aplicación a la lista de aplicaciones que se les permite ejecutar en segundo plano. Si no lo hace, una vez que se detenga la aplicación (pasando de la lista de tareas recientes o Android que la mate por razones de recursos), no se reiniciará automáticamente.

En los dispositivos Huawei, la configuración se denomina "aplicaciones protegidas". No puede agregar su aplicación a la lista de "aplicaciones protegidas" mediante programación. Necesitas decirle al usuario que tiene que hacerlo después de haber instalado tu aplicación. Las aplicaciones conocidas (como Whatsapp, Facebook, Google Mail) son añadidas automáticamente por el fabricante.

Este comportamiento puede ser diferente en diferentes dispositivos y puede ser diferente en diferentes versiones de Android y puede ser diferente si el dispositivo está "marcado" para un operador móvil específico, ya que los operadores móviles también pueden jugar con los propios ajustes.

Consulte la configuración de "Aplicaciones protegidas" en los teléfonos Huawei y cómo manejarlo para obtener más detalles.

EDIT: Añadido esto:

Además, Android rompió el comportamiento de "retroceso de los últimos" en Android 4.4 (Kitkat) de modo que causa problemas para las aplicaciones que se han barrido. Los servicios pegajosos no se reinician y la Intent difusión no se entrega. Hay alguna información aquí sobre las soluciones para hacer frente a eso: En Android 4.4, eliminar aplicaciones de tareas recientes de forma permanente mata la aplicación con su servicio. ¿Alguna idea de por qué?

Además, ¿has instalado tu aplicación en Google Play Store? Es posible que el comportamiento sea diferente para las aplicaciones que se han instalado desde Play Store en comparación con las aplicaciones instaladas localmente (desde descargas o mediante adb o lo que sea).

Parece que este escenario sucede en pocos dispositivos (por ejemplo : Xiaomi, dispositivos de Honor, dispositivos Samsung con función SmartManager, etc.) donde la aplicación se detiene cuando el usuario elimina la aplicación de tareas recientes.

Esto se debe a que los fabricantes han agregado la función de administrador de tareas por defecto, que obliga a detener las aplicaciones de memoria / gestión de la batería. Pero pocas aplicaciones como Whatsapp, Facebook funciona. Esto puede ser porque habrían incluido en la lista blanca las aplicaciones más famosas.

Pasando por las recomendaciones de la documentación para desarrolladores de Android / UX, una posible solución para este escenario,

Caso Xiaomi dispositivos basados ​​en MIUI:

Cree un UX para comunicarse con el usuario para habilitar el permiso "AutoStart" a su aplicación. Básicamente el usuario tiene que abrir la aplicación "Seguridad" -> haga clic en "Permisos" -> haga clic en "Inicio automático" -> buscar su aplicación y habilitarla. Sé que es ridículo y doloroso, pero no hay otra opción directa.

Haga lo anterior después de comprobar si el fabricante es Xiaomi

 String manufacturer = "xiaomi"; if(manufacturer.equalsIgnoreCase(android.os.Build.MANUFACTURER)) { //this will open auto start screen where user can enable permission for your app Intent intent = new Intent(); intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")); startActivity(intent); } 

Nota: Este procedimiento puede ser diferente para los dispositivos de Honor, los dispositivos de Samsung como su muy específico para el fabricante.

También como una manera normal de resolver esto para otros dispositivos, es crear un servicio pegajoso con el método onTaskRemoved que onTaskRemoved . Utilice el siguiente código:

 public class BackgroundService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } @Override public void onTaskRemoved(Intent rootIntent) { //create a intent that you want to start again.. Intent intent = new Intent(getApplicationContext(), BackgroundService.class); PendingIntent pendingIntent = PendingIntent.getService(this, 1, intent, PendingIntent.FLAG_ONE_SHOT); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 5000, pendingIntent); super.onTaskRemoved(rootIntent); } } 

Aquí el servicio comenzará de nuevo después de 5 segundos. Puede reemplazarlo por cualquier intento que desee iniciar de nuevo después de haber sido eliminado de las aplicaciones recientes.

Si el botón "Detener la Fuerza" está desactivado, significa que el borrado de la aplicación en Visión general ha provocado que la aplicación se detenga por completo en este dispositivo. No recibirás ninguna emisión hasta que el usuario interactúe con tu aplicación de nuevo.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.