android - 取消改造请求或在离开 Activity 或 fragment 时处理它们 - android

标签 android retrofit

我使用 Retrofit library处理来 self 的 WCF 网络服务的 JSON 响应。

RestService.getRestService().search("tools", new Callback<SearchResult>() {
    @Override
    public void success(SearchResult searchResult, Response response) {
        if( searchResult == null) return;
        textView.setText(searchResult.toString());
    } // end of success(

    @Override
    public void failure(RetrofitError error) {
            showToast(R.string.internet_sikintisi);

    }
});

我注意到,如果我离开调用此函数的 fragment 或 Activity ,我会收到错误消息。因为我在 Activity 或 fragment 尚不存在的 textView 中设置了文本。

我把代码修改成这样:

RestService.getRestService().search("tools", new Callback<SearchResult>() {
    @Override
    public void success(SearchResult searchResult, Response response) {

        if( searchResult == null) return;
        try{
            textView.setText(searchResult.toString());
        } catch(Exception e) {}

    } // end of success(

    @Override
    public void failure(RetrofitError error) {
        try{
                showToast(R.string.internet_sikintisi);
            } catch(Exception e) {}
    }
});

基本上,问题已解决,应用程序不会在用户每次立即进出时崩溃。这个问题可能还有更好的解决方案。

我检查过 Retrofit 没有有取消请求功能!

最佳答案

您需要添加检查成功和失败的方法,就像您在使用异步任务检查上下文是否仍然存在时一样,或者创建一个您在 Activity 或 fragment 的 onResume/onPause 上设置的 isActive 字段。

关于android - 取消改造请求或在离开 Activity 或 fragment 时处理它们 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33010795/

相关文章:

android - 具有折叠工具栏和 ImageView 的视差 TabLayout

android - 事件处理程序在哪个线程上执行?

安卓 M + 改造 + JSON : Can't make field constructor accessible

android - Retrofit2 Authorization - 访问 token 的全局拦截器

java - 带有客户端证书的 OkHttp(crt,p12): java. security.cert.CertPathValidatorException:未找到证书路径的信任 anchor

android - 改造后的 Rxjava2

java - 调用 onPause 时保存大量数据?

android - 如果我的函数调用异步函数,是否会迫使我让我的函数返回 Future?

android - 如何使用 Android 上的 DocumentBuilder DOM 解析器解析带有包含非拉丁 Unicode 字符的标签名称的 XML

java - 读取 JSON - Retrofit - Android Studio