gpt4 book ai didi

java - 使用暂停和恢复选项从后台服务在 TextView 中设置运行计时器

转载 作者:行者123 更新时间:2023-12-01 13:41:11 28 4
gpt4 key购买 nike

我通过 Stopwatch class 创建了一个计时器并在 Activity 中成功实现。但我想在关闭应用程序后继续计时器,所以我使用了Service并将方法放入其中。如下所示:

MyService.java:

    Stopwatch stopwatch = Stopwatch.createStarted();
String workingTime1 = "";

void startThreadUpdateTimer() {
final DecimalFormat format = new DecimalFormat("00");
Timer T = new Timer();
T.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub

workingTime1 = "Your effort is "
+ format.format(Double.valueOf(stopwatch
.elapsed(TimeUnit.HOURS)))
+ ":"
+ format.format(Double.valueOf(stopwatch
.elapsed(TimeUnit.MINUTES)))
+ ":"
+ format.format(Double.valueOf(stopwatch
.elapsed(TimeUnit.SECONDS)))
+ " till now for the day";

SwipePage.efforttimer.setText(workingTime1);
}
});
}
}, 1000, 1000);

}

void runOnUiThread(Runnable runnable) {
handler.post(runnable);
}

efforttimer 是我想在其中显示我的努力时间的 TextView。我认为绑定(bind)服务或广播接收器在这里会有所帮助。尝试了很多方法但还没有成功。

所有帮助和建议大多都是值得赞赏的。

谢谢

最佳答案

LocalBroadcastManager对于您的情况来说,这将是最简单的解决方案。

在您的 MyService 中,您需要以下代码:

public class MyService extends Service {
public static final String ACTION_UPDATE = "MyServiceACTION_UPDATE";
...

private void updateEmitterMethod() {
LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(ACTION_UPDATE));
}
}

在您的 Activity 中,您将拥有:

private BroadcastReceiver mMyServiceUpdateReciever;
...

@Override
public void onResume() {
super.onResume();
mMyServiceUpdateReciever = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
onUpdateMethod();
}
};
LocalBroadcastManager.getInstance(this).registerReceiver(mMyServiceUpdateReciever, new IntentFilter(MyService.ACTION_UPDATE));
}

@Override
public void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMyServiceUpdateReciever);
}

关于java - 使用暂停和恢复选项从后台服务在 TextView 中设置运行计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20760245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com