gpt4 book ai didi

android - 定期任务的 ScheduledThreadPoolExecutor(使用 Retrofit)只触发一次,永远不会再触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:44:27 25 4
gpt4 key购买 nike

我有以下代码用于每 X 秒从服务器轮询一次未读通知计数

我通过 App.onCreate() 中的 ScheduledThreadPoolExecutor 开始这个过程,

Log.d("XXX", "Requesting Notification count from server ...");

被调用一次(我可以在 Logcat 中看到),但是两个 Retrofit 回调函数都没有被调用(实际上没有 Retrofit 调试日志)。此外,“从服务器请求通知计数......”再也不会打印出来(即周期性任务未运行)

我也将 Retrofit 用于其他网络服务调用(根据用户输入)并且它们工作正常(我可以在 logcat 中看到传入和传出的请求/响应)

public class App extends Application  {



private ScheduledExecutorService scheduleTaskExecutor;
...


@Override
public void onCreate() {
super.onCreate();

//region Set up the periodic notification count listener task


scheduleTaskExecutor= Executors.newScheduledThreadPool(2);
scheduleTaskExecutor.scheduleAtFixedRate(new PeriodicNotifCountFetchTask(), 0, 5, TimeUnit.SECONDS);

//endregion
}


class PeriodicNotifCountFetchTask implements Runnable {

@Override
public void run() {
Log.d("XXX", "Requesting Notification count from server ...");
EMRestClient.getmEMRestService().getNotificationCount(new Callback<NotificationCount>() {
@Override
public void success(NotificationCount response, Response unused) {

int unreadNotifCount = response.getCount();

Log.d("XXX", "Successfully fetched notification count, unread = " + response.getCount());
if (unreadNotifCount>0){
// call listener to repaint menu
for (NewNotificationListener x :notifListeners){
x.onNewNotificationReceived(response.getCount());
}
}
}

@Override
public void failure(RetrofitError error) {
Log.d("XXX", "Failed to fetch notification count from server");
}
});

}
}


}

改造部分代码在这里:

    @POST("/notification/notification_count/")
void getNotificationCount(Callback<NotificationCount> callback);

最佳答案

可能会出现一些异常,因为后续调用将被抑制。 ScheduledThreadPoolExecutor only "ticking" once

所以试着把你的代码放在 runOnUiThread 的 runnable 里面,比如 Scheduling recurring task in Android

关于android - 定期任务的 ScheduledThreadPoolExecutor(使用 Retrofit)只触发一次,永远不会再触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27872016/

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