首页 > 解决方案 > Android线程异常和recyclerview不更新信息

问题描述

MainActivity 完整代码:https ://pastebin.com/G6RDxKan

我正在制作硬币市场应用程序。

线程之前运行良好,但是当我更改一些代码以更改应用程序设计时,发生了线程异常。

我没有更改任何线程代码,因此线程不会有问题。

我的线程如下所示。

@Override
    protected void onResume() {
        super.onResume();
        pref = getSharedPreferences("pref", MODE_PRIVATE);
        token = pref.getString("token", "");
        if (token.equals("")) {
            nv.getMenu().findItem(R.id.login).setVisible(true);
            nv.getMenu().findItem(R.id.dashboard).setVisible(false);
        } else {
            nv.getMenu().findItem(R.id.login).setVisible(false);
            nv.getMenu().findItem(R.id.dashboard).setVisible(true);
        }
        BithumbThread thread1 = new BithumbThread();
        UpbitThread thread2 = new UpbitThread();
        thread1.start();
        thread2.start();

        Log.d("/////////","OnResume End");
    }
class BithumbThread extends Thread {

        @Override
        public void run() {
            try {

                    Api_Client api = new Api_Client("" + bithumb_access,
                            "" + bithumb_secret);
                    HashMap<String, String> rgParams = new HashMap<String, String>();
                    rgParams.put("currency", "ALL");
                    .
                    .
                    .
                    String Asset = "Bithumb : " + balance;
                    tv_currentAsset.setText(Asset);


                }

                Log.d("/////////","Thread End");
            } catch (Exception e) {

                Log.d("/////////", "DataGetError");
            }
            try {
                Thread.sleep(1000);

            } catch (InterruptedException e) {
            }
        }
    }

    class UpbitThread extends Thread {

        @Override
        public void run() {
            try {




                String accessKey = (upbit_access);
                String secretKey = (upbit_secret);
                String serverUrl = ("https://api.upbit.com");


                Algorithm algorithm = Algorithm.HMAC256(secretKey);
                String jwtToken = JWT.create()
                        .withClaim("access_key", accessKey)
                        .withClaim("nonce", UUID.randomUUID().toString())
                        .sign(algorithm);

                .
                .
                .
                    String Asset2 = "Upbit : " + Double.toString(balance_total);
                    tv_currentAsset2.setText(Asset2);
                }



                Log.d("/////////","Thread End");
            } catch (Exception e) {

                Log.d("/////////", "DataGetError");
            }
            try {
                Thread.sleep(1000);

            } catch (InterruptedException e) {
            }
        }
    }

当我输入密钥时没有空异常错误,但是有线程异常并且线程无法更新recyclerview(应用程序的主页)中的硬币信息,尽管从json解析数据效果很好

我不知道哪件事使线程异常。

我也试过调试,但我找不到任何错误。

I/Choreographer: Skipped 57 frames!  The application may be doing too much work on its main thread.

我从logcat中找到的只是这个。

也许有些适配器会出现问题。

如何修复不发生线程异常并更新回收器视图?

标签: javaandroidmultithreading

解决方案


推荐阅读