繁体   English   中英

如何在 Android 中的 Service 中进行 Retrofit API 调用

[英]How to Make Retrofit API calls inside Service in Android

我正在尝试从数据库中检索数据并将结果显示为吐司消息(计划在我开始工作后做更多事情)。但是,它给了我错误 - “意外的挂起异常:java.lang.ArrayIndexOutOfBoundsException”并告诉我的情况是“Call> call = apiServiceNotif.getNotifications(id, onReceive);”

我在 [ onStartCommand ] 中调用回调函数,如下所示:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
      getMessage("1"); //for testing
      return START_STICKY;
}

我已经在另一个类上测试了回调函数并且工作正常。 这是我第一次使用服务,所以老实说我有点迷茫。 任何帮助深表感谢。

这是我的回调函数:

public void getMessage(String id){
        ApiServiceMessage apiServiceMessage = ApiClient.getClient().create(ApiServiceMessage.class);
        Call<List<Messsages>> call = apiServiceMessage.getMessages(id);
        call.enqueue(new Callback<List<Messages>>() {
            @Override
            public void onResponse(Call<List<Messages>> call,
                                   Response<List<Messages>> response) {
                List<Messages> messages= response.body();

                 for(Messages m: messages){
                     Toast(getApplicationContext(), m.getMessageTitle + " " + m.getMessageContent, Toast.LENGTH_LONG).show();
                 }
                }
            }

            @Override
            public void onFailure(Call<List<Messages>> call, Throwable t) {
                Toast.makeText(getApplicationContext(), "Failed to load." + t, Toast.LENGTH_LONG).show();


            }
        });
    }

当我问这个问题时,我的目标是使用一种服务,每 4 小时从 API 中检索一次消息并将它们转换为通知。 当我不知道我可以使用 GCM / Firebase 发送通知时,这又回来了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM