我正在生成一个无限时间的随机字符串,并将其设置为EditText。
当我不使用runOnUi应用程序时,我正在使用具有较高功能的较新设备。但是当我启动线程并给出错误(从错误的线程异常调用)时,它在较旧的模型上崩溃

然后我使用了runOnUi,但是它使超级慢并强制关闭它。

Thread thread = new Thread(new Runnable() {
                   @Override
                   public void run() {
                       while (true) {
                           runOnUiThread(new Runnable() {
                               @Override
                               public void run() {
                                   try {
                                       tryPass.setText(getAlphaNumericString());
                                       Thread.sleep(2000);
                                   } catch (InterruptedException e) {
                                       e.printStackTrace();
                                   }


                               }
                           });
                       }
                   }
               });
               thread.start();

最佳答案

您试图通过在UI线程上调用Thread.sleep(2000);来阻止UI线程。

尝试这种方式:

Thread thread = new Thread(new Runnable() {
    @Override
    public void run() {
        while (true) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    tryPass.setText(getAlphaNumericString());
                }
            });
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
});
thread.start();

09-12 23:35