【问题标题】:How to Prevent Android From Killing My Activity. Services Maybe?如何防止 Android 杀死我的活动。服务也许?
【发布时间】:2013-08-29 20:37:40
【问题描述】:

我对 Android 开发还很陌生。我有一个应用程序,它记录用户工作的时间并显示他们赚了多少钱。它运行良好,直到 Android 终止该活动。有没有办法防止这种情况?我已经阅读了一些关于服务的内容,但我不确定它们是否是我需要的,甚至不确定如何使用它们。任何帮助都是极好的。感谢您的时间。 (编辑)这是我的 clockIn() 方法。当用户按下时钟按钮时调用它。

public void clockIn(){
    start = System.currentTimeMillis();
    mTimer = new Timer();
    mTimer.scheduleAtFixedRate(new TimerTask() {


        @Override
        public void run() {
            now = System.currentTimeMillis();
            seconds = date.getSeconds();   
            elapsedTime = now - start;
            earnings = (wageHour/60/60/1000)*elapsedTime;
            runOnUiThread(new Runnable() {
                public void run() {

                    timeDisplay.setText("$" + String.format("%.4f", earnings));


               }
           });

             }
        }, 0, 100);
}

【问题讨论】:

  • 是的,只需使用服务!

标签: android service android-activity timer


【解决方案1】:

您如何跟踪时间?跟踪时间的最简单方法是将时间戳保存在数据库表中。例如入住/退房时间。杀死的活动应该没有问题。

【讨论】:

  • 这个应用程序会实时更新用户的收入,所以我一直在使用 Timer() 类。每一帧都显示了用户的进度以及当前的收入。
  • 好的,但您仍然可以使用时间戳来完成。只需使用签入时间和现在的差异每秒更新 gui。 - 服务也可以工作,但请记住,每个后台操作都会消耗电池。即使显示屏关闭或未加载活动。我不知道计时器要多少钱...
  • mTimer = new Timer(); mTimer.scheduleAtFixedRate(new TimerTask()) 我一直在使用它来调用我的更新。你有更好的方法吗?
  • 方法没问题。但我建议不要在 timertask 中计算时间,而是在数据库中查询开始时间戳并更新 gui。如果活动关闭并重新打开,这也可以正常工作,因为数据库中的时间戳和现在之间的差异与计时器无关。 - 但是服务可以工作,但没有必要,而且我认为用例复杂。
  • 看起来不错,但就像你说的,当你的方法重新开始时,一切都被重置了。
【解决方案2】:

您可能需要查看foreground notifications 以获取服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多