Потоки и параллелизм в Android - PullRequest
0 голосов
/ 01 мая 2020

Я очень новичок в Android разработке. Может кто-нибудь помочь мне с этим фрагментом, я не знаю, почему он работает отлично, хотя я обновляю свой TextView из рабочего потока. Когда я говорю, что работает отлично, я имею в виду TextView показывает количество значений без каких-либо проблем. Итак, мой вопрос - «Действительно ли возможно обновить пользовательский интерфейс из фонового потока, и если нет, то я ошибаюсь»

public class MainActivity extends AppCompatActivity {
    TextView textView ;
    private int count;
    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textview);
        btn = findViewById(R.id.startbtn);
        btn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                listen();
            }
        });
    }

    public void listen(){
        new Thread(new Runnable() {
            @Override
            public void run()  {
                long time = System.currentTimeMillis();
                while(System.currentTimeMillis()<=time +10000) {
                    count++;
                }
                textView.setText(count+"");
            }
        }).start();
    }
}

1 Ответ

0 голосов
/ 01 мая 2020

Использование

runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            // Add UI code here

                        }
                    });

Все обновления пользовательского интерфейса должны выполняться в главном потоке.

...