【问题标题】:Indefinite Server Requests in Air for Android?适用于 Android 的无限期服务器请求?
【发布时间】:2013-12-09 23:14:57
【问题描述】:

我正在使用 Flash CC 和 Air for Android 制作一个 Android 应用程序。该应用程序将在多个设备上连续运行(部分时间在后台),并且需要不断向服务器询问某个操作并收到是/否的答案。

最好的方法是什么?如果我使用计时器,它似乎有“最多 24.86 天”的限制。

此外,什么是不浪费太多电池的好方法,因为应用程序将在后台持续运行,永远不会关闭。

【问题讨论】:

    标签: android actionscript-3 air


    【解决方案1】:

    Timer 类的限制是由于有符号的 32 位整数的最大值。 Timer 将其当前值存储为 int,自开始以来以毫秒为单位。以毫秒为单位的 24.86 天恰好是 2147904000,或接近带符号的 32 位整数 (2147483647) 的最大值。两者之间的差异很可能是由于 Timer 类的真实最大值四舍五入而弥补的。

    无论如何,最好的办法是每次都重置计时器。所以:

    var t:Timer = new Timer( delay, 1 );
    t.addEventListener( TimerEvent.TIMER_COMPLETE, timerCompleteHandler );
    t.start();
    
    function timerCompleteHandler( e:TimerEvent ):void {
        // do stuff here
        t.reset(); // resets timer to 0
        t.start(); // restarts timer
    }
    

    就电池使用而言,这是一个棘手的问题。我以前从未处理过始终在后台运行的应用程序。我肯定会避免让它做任何资源密集型的事情。因此,如果应用程序处于非活动状态/在后台运行,则应禁止更改 GUI 的任何元素之类的事情。真的,我们需要更多地了解您想在后台做什么,以确定如何在这里提供帮助。根据您在此处的描述,您似乎最好设置推送通知而不是使用对您的服务器的自定义调用。

    【讨论】:

    • 您的回复很有帮助。关于电池使用情况,操作系统本身似乎可以很好地管理事情。我创建了一个 60 秒的计时器,向服务器发送请求并记录它们。我让应用程序整夜运行。日志非常有趣:晚上大部分时间每小时大约有 2 个请求,直到 9:20 左右,请求开始每分钟进入大约 20 分钟,然后又回到每小时两次。我认为 Any.do 或其他 9 点左右的应用程序活动一定是造成这种情况的原因。
    • 请记住,AIR 在后台仅以 4fps 运行。我不确定这是否会影响您的应用,但值得注意。
    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2021-06-22
    • 1970-01-01
    相关资源
    最近更新 更多