Edesigner. 发表于 2020-6-27 16:58:57

懂android编程的进来一下,有事请教。关于app休眠唤醒自己的问题。

针对这个问题,我写了个测试APP,用TimerTask定时器每10秒中断一次,播放一次短暂的声音。灭屏后每10秒听到一次响声。没过几分钟就听不到声音了,估计是休眠了(休眠了就连CPU也停止执行了)。用手点一下屏,OLED屏见到解锁界面,一会儿又可以听到声音了。过一会后又听不到声音了。我用另外一个手机发微信给测试的手机,测试手机来微信消息了,同时我的测试程序也有声音了。我在我的测试软件里加上电源锁,阻止系统进入休眠,加上这代码后果然,我的测试程序每10秒就响一声,没有停止过。但问题是阻止系统进入休眠肯定影响整个手机的待机时间。但微信为什么又可以在休眠时收到消息呢?他用了什么技术?我猜测如下 :有TCP/IP数据进入,网络模块唤醒了系统。你们觉得呢?
class Task extends TimerTask {
        // 必须实现方法run()
        public void run() {
        这里播放半秒语音
        }
}

电源锁:
//在获取电源锁的程序中,必须在其Manifest.xml文件中加入下面的权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />

private PowerManager.WakeLock mWakeLock;

//申请设备电源锁
    private void acquireWakeLock()
    {
      if (null == mWakeLock)
      {
            PowerManager pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
            mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE,"");
            if (null != mWakeLock)
            {
                mWakeLock.acquire();
            }
      }
    }

    //释放设备电源锁
    private void releaseWakeLock()
    {
      if (null != mWakeLock)
      {
            mWakeLock.release();
            mWakeLock = null;
      }
    }

Edesigner. 发表于 2020-6-27 17:00:47

补充一下,测试程序已经在系统电池里设置了未优化。

a136498491 发表于 2020-6-27 17:01:06

这个是应用保活的话题。关注

memstone 发表于 2020-6-27 17:07:30

难,很难搞,系统究竟是怎么回收的,估计不同厂家策略都不同。充着电时,可能没问题,拔掉充电线,就十有八九挂了。

memstone 发表于 2020-6-27 17:09:18

别和微信比,程序员最怕听到说,人家微信怎么可以。人家是大厂,在手机系统里是白名单的。

wajlh 发表于 2020-6-27 17:30:26

memstone 发表于 2020-6-27 17:09
别和微信比,程序员最怕听到说,人家微信怎么可以。人家是大厂,在手机系统里是白名单的。 ...

产品经理就是怕听见程序员说大厂有白名单,水平不够别扯白名单来凑。安卓系统有那么傻?所有的应用难道都要靠手机厂家去搞白名单里才常驻后台?

wajlh 发表于 2020-6-27 17:33:39

给你个建议,换三星手机,国产哪些垃圾除了安卓系统本身的限制外,还喜欢深度修改系统,往往还有各种自带的管家给你干掉后台。

Edesigner. 发表于 2020-6-27 17:39:30

wajlh 发表于 2020-6-27 17:33
给你个建议,换三星手机,国产哪些垃圾除了安卓系统本身的限制外,还喜欢深度修改系统,往往还有各种自带的 ...

后台没被干掉,只是定时器没有唤醒自己罢了。到系统退出休眠后还能继续工作。

Edesigner. 发表于 2020-6-27 17:47:55

网上有介绍用AlarmManager.RTC来唤醒休眠,它是硬件唤醒。

jpchen 发表于 2020-6-27 18:19:37

要用RTC硬件定时器,高版本的安卓下普通定时器在休眠时不能正常工作的

memstone 发表于 2020-6-27 18:22:36

wajlh 发表于 2020-6-27 17:33
给你个建议,换三星手机,国产哪些垃圾除了安卓系统本身的限制外,还喜欢深度修改系统,往往还有各种自带的 ...

我就是三星测试的,插电正常,不然就断连接,你有本事,你说说咋整?
如果白名单没用,人家整什么白名单。你知道系统是怎么监控应用状态的吗?好吧,你牛,产品经理。

memstone 发表于 2020-6-27 18:25:55

Edesigner. 发表于 2020-6-27 17:47
网上有介绍用AlarmManager.RTC来唤醒休眠,它是硬件唤醒。

还要看你的频度的,如果每分钟都调用,十有八九,列入异常,给你干掉。
当然,应用在前台,应该问题不大,但在后台,指望不上。不然,为什么那么多应用,无法收到消息通知?

wajlh 发表于 2020-6-27 19:58:32

memstone 发表于 2020-6-27 18:22
我就是三星测试的,插电正常,不然就断连接,你有本事,你说说咋整?
如果白名单没用,人家整什么白名单 ...

多了不敢说,我们搞过2款APP,都是过万用户的。都是要实时推送消息或者报警的,安卓/IOS都支持,从来没你说的要跟手机厂家申请加入白名单的,顶多是手机自己设置一下允许后台运行之类的。当然有些品牌型号的手机就是搞不定,比如菊花品牌的个别型号,就算是微信上去也会被杀。

memstone 发表于 2020-6-27 20:13:47

wajlh 发表于 2020-6-27 19:58
多了不敢说,我们搞过2款APP,都是过万用户的。都是要实时推送消息或者报警的,安卓/IOS都支持,从来没你 ...

请问是实时推送,还是定时拉取?

wajlh 发表于 2020-6-27 20:41:41

memstone 发表于 2020-6-27 20:13
请问是实时推送,还是定时拉取?

第一款APP是智能手表/手环配套推送消息的,第二款APP是NB烟感配套推送的报警的,谁会用定时拉取这种笨办法呢?

memstone 发表于 2020-6-27 21:49:37

wajlh 发表于 2020-6-27 20:41
第一款APP是智能手表/手环配套推送消息的,第二款APP是NB烟感配套推送的报警的,谁会用定时拉取这种笨办 ...

历害,服了。请问是什么通讯协议?

wajlh 发表于 2020-6-27 22:08:43

memstone 发表于 2020-6-27 21:49
历害,服了。请问是什么通讯协议?

极光是个好东西

Edesigner. 发表于 2020-6-27 22:16:00

wajlh 发表于 2020-6-27 22:08
极光是个好东西

为什么要用第三方?其实可以自己做。

wajlh 发表于 2020-6-27 22:24:10

Edesigner. 发表于 2020-6-27 22:16
为什么要用第三方?其实可以自己做。

各有优缺点,根据自己的项目来定就好。

wx-ta 发表于 2020-6-28 00:02:36

白名单机制,极光也是在白名单里面的,无解,用第三方推送服务是最简单可行的

wx-ta 发表于 2020-6-28 00:02:36

白名单机制,极光也是在白名单里面的,无解,用第三方推送服务是最简单可行的

chenchaoting 发表于 2020-6-28 11:01:44

白名单没问题,原来也想搞
页: [1]
查看完整版本: 懂android编程的进来一下,有事请教。关于app休眠唤醒自己的问题。