android – 清除最近的应用程序擦拭应用程序内存,我的接收器停止工作

MyApp的Receiver只是在背景中工作正常:
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();
    }
}

我的收件人的清单文件

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

        </intent-filter>
    </receiver>

文件说,如果我在清单文件中声明一个接收者,它应该始终工作.但在我的情况下不是…

但是,当我通过刷新他的最近的应用程序清除它,它只是停止工作.在我去任务管理员之后,看到MyApps forcetop被禁用,如以下

我想出了一些应用程序,如watsapp和fb总是保持在记忆中,说这个bcoz之后刷新清除最近的应用程序仍然任务经理有如下所示的followig状态

我怎么能这样做到我的应用程序..什么会使我的应用程序的行为像其他第三方应用程序,如watspp和Facebook …我如何使我的应用程序在内存总是我问这个然后只有我的接收器将永远工作..如果我错了,给我一个解决方案来做这个…

我一直在搜索很多,但仍然找不到解决方案…我错了吗?还是真的有办法呢?请有人帮助我…这让我一个星期!希望我在这里解释我的问题,如果我不问我,我会给你立即回应.

解决方法

在某些华为设备(和一些LG和小米设备)上,您需要将应用程序添加到允许在后台运行的应用程序列表中.如果没有,一旦您的应用程序停止(通过从最近的任务列表中滑动,或者由于资源原因,Android会杀死应用程序),则不会自动重新启动.

在华为设备上,该设置称为“受保护的应用”.您无法以编程方式将您的应用添加到“受保护的应用”列表中.你需要告诉用户他已经安装了你的应用程序后必须这样做.知名应用程序(如Whatsapp,Facebook,Google Mail)由制造商自动添加.

不同设备上的这种行为可能不同,并且在不同版本的Android上可能会有所不同,如果设备是针对特定移动操作符的“品牌”,则移动操作符也可以修改设置.

有关详细信息,请参阅“Protected Apps” setting on Huawei phones,and how to handle it.

编辑:添加

此外,Android破坏了Android 4.4(Kitkat)中的“刷新”行为,因此它会导致已被刷新的应用程序出现问题.粘性服务不会被重新启动,并且广播意向未被传递.这里有一些关于解决办法的信息:In android 4.4,swiping app out of recent tasks permanently kills application with its service . Any idea why?

此外,您是否从Google Play商店安装了您的应用程式?对于从Play商店安装的应用程序与本地安装的应用程序(从下载或通过adb或其他方式)的应用程序,行为可能不同.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...