samsung quitar que prime preinstaladas pasa pantalla los iconos grand eliminar dela datos como celular cache borro borrar aplicaciones android service google-cloud-messaging broadcastreceiver taskmanager

android - quitar - borrar Aplicaciones recientes borran la memoria de las aplicaciones y mi receptor dejó de funcionar



que pasa si borro los datos de cache de mi celular (3)

El receptor de MyApp solo funciona bien si está en segundo plano, 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>

El documento dice que si declaro un receptor en un archivo de manifiesto, siempre debería funcionar. pero en mi caso no es ...

Pero cada vez que borro mis aplicaciones recientes al deslizarlas, simplemente deja de funcionar. y después fui al administrador de tareas y vi que MyApps force deja de deshabilitarse como se muestra a continuación

y descubrí que algunas aplicaciones como watsapp y fb siempre se mantienen en la memoria, digo esto porque después de deslizar las aplicaciones recientes y claras, el administrador de tareas tiene el siguiente estado como a continuación

y

¿Cómo puedo hacer esto en mi aplicación? ¿Qué hará que mi aplicación se comporte como otras aplicaciones de terceros como watspp y Facebook? ¿Cómo puedo hacer que mi aplicación esté en la memoria siempre? Pregunto esto Entonces solo 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 está haciendo una semana Espero haber explicado mi problema aquí si no me preguntan, le daré una respuesta inmediata.


En algunos dispositivos Huawei (y algunos dispositivos LG y Xiaomi) debe agregar su aplicación a la lista de aplicaciones que pueden ejecutarse en segundo plano. Si no lo hace, una vez que su aplicación se haya detenido (al deslizar el dedo desde la lista de tareas recientes o cuando Android elimine la aplicación 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 mediante programación a la lista de "aplicaciones protegidas". Debes decirle al usuario que debe hacerlo después de que hayas instalado tu aplicación. El fabricante agrega automáticamente aplicaciones conocidas (como Whatsapp, Facebook, Google Mail).

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á "calificado" para un operador móvil específico, ya que los operadores móviles también pueden modificar la configuración ellos mismos.

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

EDITAR: Agregó esto:

Además, Android rompió el comportamiento de "deslizar desde recientes" en Android 4.4 (Kitkat), por lo que causa problemas para las aplicaciones que se han deslizado. Los servicios fijos no se reinician y no se entregan Intent transmisión. Aquí hay información sobre soluciones alternativas para tratar con eso: en Android 4.4, deslizar la aplicación fuera de las tareas recientes mata permanentemente la aplicación con su servicio. ¿Alguna idea de por qué?

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


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

Esto se debe a que esos fabricantes han agregado la función de administrador de tareas de forma predeterminada, lo que obliga a detener las aplicaciones para la administración de memoria / 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.

Según la documentación del desarrollador de Android / recomendaciones de UX, una posible solución para este escenario,

Caso de dispositivos basados ​​en Xiaomi MIUI:

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

Haga lo anterior después de verificar 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 dispositivos Honor, dispositivos Samsung ya que es muy específico para el fabricante.

También, como una forma normal de resolver esto para otros dispositivos, es crear un servicio onTaskRemoved método onTaskRemoved . Use 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á nuevamente después de 5 segundos. Puede reemplazarlo con cualquier intento que desee comenzar nuevamente después de ser borrado de las aplicaciones recientes.


Si el botón "Forzar detención" está desactivado, significa que deslizar la aplicación hacia afuera en Descripción general ha provocado que su aplicación se detenga forzosamente en este dispositivo. No recibirá ninguna transmisión hasta que el usuario vuelva a interactuar con su aplicación.