猪八戒不吃素 2023-02-20 18:36 采纳率: 50%
浏览 30
已结题

好像是线程抢占的问题 因为有时可以运行有时不可以

好像是线程出的问题 但我不知道怎么解决 是从第一个url里面拿出所又图片的url 任何再一次解析程图片添加到list里面 但是这个程序偶尔可以运行偶尔不可以运行,并出现下面的错误。

 private Handler handler=new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            byte[] result= (byte[]) msg.obj;
            Bitmap bitmap= BitmapFactory.decodeByteArray(result,0,result.length);
            list.add(bitmap);
            recyclerView=findViewById(R.id.recyclerview);
            linearLayoutManager=new LinearLayoutManager(MainActivity4.this);
            adaptern1=new adaptern1(MainActivity4.this,list);
            recyclerView.setLayoutManager(linearLayoutManager);
            recyclerView.setAdapter(adaptern1);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        downAsynFile();
    }
    private void downAsynFile() {new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder()
                        .url("http://mrobot.pcauto.com.cn/v2/cms/channels/3?pageNo=1&pageSize=20&v=4.0.0")
                        .build();
                Response response = client.newCall(request).execute();
                String responseData = response.body().string();
              parseJSONWithGSON(responseData);
            } catch (Exception e) {
                e.printStackTrace(); }}
    }).start(); }
    private void parseJSONWithGSON(String jsonData) {
        Gson gson = new Gson();
        Data data=gson.fromJson(jsonData,Data.class);
        showResponse(data); }
    public void showResponse(Data data){runOnUiThread(new Runnable() {
        @Override
        public void run() {
            List<Data.DataBean> dataBeans=data.getData();
            for (Data.DataBean dataBean : dataBeans) {
                String a=dataBean.getImage();
              sendrequest(a);
                } }});}
    public void sendrequest(String a) {new Thread(new Runnable() {
        @Override
        public void run() {
            OkHttpClient okHttpClient=new OkHttpClient();
            Request request=new Request.Builder()
                    .url(a)
                    .build();
            okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(@NotNull Call call, @NotNull IOException e) {
                }
                @Override
                public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                    Message message=handler.obtainMessage();
                    message.obj=response.body().bytes();
                    handler.sendMessage(message);
                }
            }); }}).start();}}

下面的是提示错误信息

2023-02-20 18:31:31.612 5635-5665/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: Thread-3
    Process: com.example.myapplication, PID: 5635
    java.lang.IllegalArgumentException: Expected URL scheme 'http' or 'https' but no colon was found
        at okhttp3.HttpUrl$Builder.parse$okhttp(HttpUrl.kt:1260)
        at okhttp3.HttpUrl$Companion.get(HttpUrl.kt:1633)
        at okhttp3.Request$Builder.url(Request.kt:184)
        at com.example.myapplication.MainActivity4$4.run(MainActivity4.java:89)
        at java.lang.Thread.run(Thread.java:923)
2023-02-20 18:31:31.612 5635-5666/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: Thread-4
    Process: com.example.myapplication, PID: 5635
    java.lang.IllegalArgumentException: Expected URL scheme 'http' or 'https' but no colon was found
        at okhttp3.HttpUrl$Builder.parse$okhttp(HttpUrl.kt:1260)
        at okhttp3.HttpUrl$Companion.get(HttpUrl.kt:1633)
        at okhttp3.Request$Builder.url(Request.kt:184)
        at com.example.myapplication.MainActivity4$4.run(MainActivity4.java:89)
        at java.lang.Thread.run(Thread.java:923)


  • 写回答

2条回答 默认 最新

  • 嗝屁小孩纸 2023-02-20 18:56
    关注

    你是不是用了多线程?还是用了线程池的方式,写代码似乎看不出问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 已采纳回答 3月1日
  • 创建了问题 2月20日

悬赏问题

  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因