为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建从活动更新 TextView 的计时器,以及当应用进入后台时,它会继续运行

如何创建从活动更新 TextView 的计时器,以及当应用进入后台时,它会继续运行

繁华开满天机 2022-09-22 20:01:59

我试图弄清楚如何做到这一点,我想从服务器提供的数据中创建一个计时器,例如:3600 < - 这来自服务器,所以我想用这个时间创建一个计时器,并有一个TextView,每1秒更新一次,一旦计时器完成,创建一个对话框, 这不是必要的,我知道该怎么做,但我想做,如果用户把应用程序放在后台计时器继续运行。

我想的是创建一个并从那里更新,如果应用程序在后台运行,我应该做一些事情来继续运行计时器,并且还考虑计时器是否完成,将其添加到SharePreferences,以便我可以知道计时器是否完成(如果用户在后台拥有该应用程序)。BroadcastServiceTextViewonPause()

我怎样才能做到这一点?


查看完整描述

2 回答

?
开满天机

TA贡献1489条经验 获得超13个赞

Use foreground service we can run countdowntimer that runs in background

前台服务示例 Github


查看完整回答
反对 回复 2022-09-22
?
翻过高山走不出你

TA贡献1525条经验 获得超2个赞

可以使用处理程序在自定义应用程序类中执行定期同步。仅当你的应用被终止时,该处理程序才会被销毁。

您可以将应用程序类扩展为如下所示:

public class App extends Application {


    private static final long ONE_MINUTE = 60 * 1000;


    private Handler handler;


    @Override

    public void onCreate() {

        super.onCreate();


        this.handler = new Handler();

        this.handler.postDelayed(syncData, ONE_MINUTE);

    }


    private Runnable syncData = new Runnable() {

        @Override

        public void run() {

            // TODO startSync();

            handler.postDelayed(this, ONE_MINUTE);

        }

    };

}

在该Runnable中,您可以做任何您想做的事情,例如使用共享首选项。


您可以在 中将此自定义类设置为应用程序类。AppAndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    package="your_package_name">


    <application

        android:name=".App"

        rest of your code .... >

    </application>


</manifest>


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信