我正在设计一个应用程序,只要应用程序位于前台,该应用程序就会定期向专用服务器发送状态.
在我通过网络搜索时,我看到了一些不同的方法,并想知道这样做的最佳方法是什么.
安排服务器调用的最佳方法是什么?
我看到的选项是:
计时器.
服务.
带AlarmManager的 BroadcastReciever .
你怎么看?
编辑:
我需要这个的原因是一个基于聊天的应用程序,它将所有用户操作发送到远程服务器.
即用户正在键入消息,用户正在阅读消息,用户在线,用户在线等.
这意味着每隔一段时间,我需要向服务器发送我正在做的事情,因为我和其他人打开聊天室,他们需要知道我在做什么.
与whatsapp消息反馈机制类似:

编辑#2:
现在几乎总是通过JobSchedulerAPI(或FirebaseJobDispatcher更低的API)安排重复任务,以防止电池耗尽问题,可以在Android培训的vitals部分阅读
每N毫秒调用一个函数最准确的方法是什么?
我使用Thread.sleep 修改了这个例子,它不是很准确.
我正在开发一个音乐应用程序,它将在给定的BPM上播放声音.我知道创建一个完全准确的节拍器是不可能的,我不需要 - 只是想找到最好的方法来做到这一点.
谢谢
我需要让我的RSS Feed阅读器每隔10分钟检查一次新帖子,然后在有新帖子的情况下解析它们.我还需要每分钟都更新UI.
我从不同的来源阅读和听到了不同的东西.我目前的理解是我可以ScheduledThreadPoolExecutor用来制作两个预定的线程,其中一个需要Handler更新UI.我不确定这些类或者最有效的使用方法TimerTask.
我也很不确定在哪里制作这些的子类.一位朋友建议TimerTask在FeedParser课堂上扩展为内部课程以使其更简单.但是,要以这种方式实现它,我必须使用该run()方法TimerTask而不重写它,这意味着我不能简单地使用我需要的参数来运行需要的函数.
简而言之,为此安排任务的最佳方法是什么,我将在哪里实现这些?
android handler threadpool timertask scheduledexecutorservice
我CountDownTimer在我的Activity. 我决定远离CountDownTimer并使用,ScheduledThreadPoolExecutor因为CountDownTimers 无法在onTick().
出于某种原因,我Runnable在下面的代码中只执行一次。我不确定为什么它不执行多次。该destroyCountdownTimer()功能没有受到影响。
private ScheduledThreadPoolExecutor mCountdownTimer;
private Tick mTick;
class Tick implements Runnable {
@Override
public void run() {
Log.e("tick", String.valueOf(mAccumulatedMilliseconds));
mAccumulatedMilliseconds += 1000;
populateTimeAccumulated();
populateTimeRemaining();
updatePercentages();
if (mTotalMilliseconds <= mAccumulatedMilliseconds) {
destroyCountdownTimer();
}
}
}
private void startCountdown() {
if (mAccumulatedMilliseconds < mTotalMilliseconds) {
mCounterIsRunning = true;
if (mCountdownTimer == null) {
mCountdownTimer = new ScheduledThreadPoolExecutor(1);
}
if (mTick == null) { …Run Code Online (Sandbox Code Playgroud)