不要依赖后台行为

不要相信Google提供的任何与后台运行有关的API,这些API在国内基本上通通不可用,尤其是华为。
基本上,在华为系统上,当你的App被切到后台,App很快就会被“冻结”,意思是,App进程虽然没有被杀死,但App进程也不会被调度到。
运气好的话,下次用户启动App时,你的App还在冻结状态,这时候App会被重新调度,运气不好的话,App进程可能已经被杀了,App这时候会重新启动,取决于系统,App可能会从上次离开的页面重新启动,或者是从App入口重新启动。如果是从上次离开的页面重新启动的话,你可就要小心了,你需要确保App的入口是某个特定Activity时,App也能表现出正确的行为。

在国内的某些系统上,AlarmManager不好用,前台服务不好用,让用户手动把用户加入省电白名单也不一定好用,总之如果希望在华为之类的系统上获得一致的行为,就压根不要依赖后台行为。

适配各家厂商的推送服务

在没有可靠后台服务的情况下,App无法使用系统厂商推送服务之外的方式来实现推送。选几个大厂商,适配他们的推送服务吧,然后再接一个极光之类的,祈祷其他小厂商后台管控稍微松一点。