Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]:无网络下请求程序闪退 #200

Closed
hcx1002 opened this issue Aug 25, 2023 · 9 comments
Closed

[Bug]:无网络下请求程序闪退 #200

hcx1002 opened this issue Aug 25, 2023 · 9 comments
Labels
bug Something isn't working

Comments

@hcx1002
Copy link

hcx1002 commented Aug 25, 2023

框架版本【必填】

12.0

问题描述【必填】

无网络环境下请求接口导致程序崩溃 我在接口处有写try catch,但程序没有捕获到错误,直接闪退。
原因是 开启了日志打印 日志打印应该是在子线程,这样就捕获不到错误,造成程序闪退
临时解决:初始化EasyConfig的时候把日志打印关闭。

复现步骤【必填】

1、初始化

private void initHttp() {
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .build();
    EasyConfig.with(okHttpClient)
            // 是否打印日志
            .setLogEnabled(BuildConfig.DEBUG)
            // 设置服务器配置(必须设置)
            .setServer(new RequestServer())
            // 设置请求处理策略(必须设置)
            .setHandler(new RequestHandler())
            // 设置请求重试次数
            .setRetryCount(3)
            // 添加全局请求参数
            //.addParam("token", "6666666")
            // 添加全局请求头
            //.addHeader("time", "20191030")
            // 启用配置
            .into();
}

2、关闭网络

3、请求任意接口

public static void getAllTaskConfig(LifecycleOwner lifecycleOwner, Context context, InterListner<File> listener) {
    try {
        EasyHttp.download(lifecycleOwner)
                .method(HttpMethod.GET)
                .file(new File(context.getFilesDir(), "all_task.json"))
                .url(config)
                .listener(new OnDownloadListener() {
                    @Override
                    public void onDownloadProgressChange(File file, int progress) {
                    }

                    @Override
                    public void onDownloadSuccess(File file) {
                        listener.callBack(file);
                        Toasts.success("获取配置文件成功");
                    }

                    @Override
                    public void onDownloadFail(File file, Exception e) {
                        Toasts.error("获取配置文件失败");
                    }
                }).start();
    } catch (Exception e) {
        Toasts.error("获取配置文件失败!请检查网络或下载链接");
    }

}

是否必现【必填】

项目 targetSdkVersion【必填】

33

出现问题的手机信息【必填】

华为 mate30

出现问题的安卓版本【必填】

鸿蒙3.0

问题信息的来源渠道【必填】

自己遇到的

是部分机型还是所有机型都会出现【必答】

全部

框架最新的版本是否存在这个问题【必答】

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 列表中是否有人曾提过类似的问题【必答】

是否已经搜索过了 issue 列表但还未能解决的【必答】

是否可以通过 Demo 来复现该问题【必答】

提供报错堆栈

FATAL EXCEPTION: pool-5-thread-1
Process: com.projectfinger, PID: 14850
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Throwable.getMessage()' on a null object reference
  at com.hjq.http.config.DefaultHttpLogStrategy.printThrowable(DefaultHttpLogStrategy.java:58)
  at com.hjq.http.EasyLog.lambda$printThrowable$4(EasyLog.java:71)
  at com.hjq.http.EasyLog$$ExternalSyntheticLambda5.run(Unknown Source:4)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
  at java.lang.Thread.run(Thread.java:930)

提供截图或视频

No response

提供解决方案

关闭日志打印

EasyConfig.with(okHttpClient)
                // 是否打印日志  ----关闭
                .setLogEnabled(false)
                // 设置服务器配置(必须设置)
                .setServer(new RequestServer())
                // 设置请求处理策略(必须设置)
                .setHandler(new RequestHandler())
                // 设置请求重试次数
                .setRetryCount(3)
                // 启用配置
                .into();
@hcx1002 hcx1002 added the bug Something isn't working label Aug 25, 2023
@getActivity
Copy link
Owner

image image

@getActivity
Copy link
Owner

小伙子,我用华为的 Mate 30 鸿蒙 3.0 进行了测试,并没有出现你所说的这个问题。

@getActivity
Copy link
Owner

EasyHttp-12.2.aar.zip

@getActivity
Copy link
Owner

小伙子,不过我加了一个防空判断,你下载上面的 aar 包看看行不行?

@HongLiyu266
Copy link

我也遇到了,调用EasyHttp.cancel(tag)和切换网络时会崩溃,把日志关了就好了

@getActivity
Copy link
Owner

小伙子,远程依赖已经更新了,你可以更新到远程依赖再看看。

@HongLiyu266
Copy link

感谢轮子哥

@hcx1002
Copy link
Author

hcx1002 commented Aug 28, 2023

感谢轮子哥,新版本没这个问题了

@getActivity
Copy link
Owner

getActivity commented Aug 28, 2023

@hcx1002 @HongLiyu266 小伙子们,我只是简单加了一个防空判断,不确定有没有其他问题,例如可能会出现日志打印有问题,你们要多留意下测试,有问题及时反馈。

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants