Как проверить, жив ли поток после перезапуска Activity? - PullRequest
0 голосов
/ 30 марта 2020

Я выполняю тяжелую операцию в потоке, которая вызывается при нажатии кнопки. Чтобы предотвратить повторное нажатие этой кнопки пользователем, я просто проверяю, есть ли thread.isAlive(), что работает нормально, пока я в текущей активности. Когда я нажимаю backpress и возвращаюсь к этому занятию, thread.isAlive() возвращает false и снова начинает выполнять эту интенсивную функцию, потому что я создаю новый поток в onCreate. Как я могу решить это? Мой код как под

 Thread thread;
     @Override
           protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_backup_restore);
           Backup backupobj= new Backup();
            thread= new Thread (new BackupThread(backupobj));

                  button.setOnClickListener(v -> { 
                  if(posts.size()>0) {

                 if (!thread.isAlive()) {
                   thread.start();

                 }
                 else {
                     Toast toast = Toast.makeText(getApplicationContext(), "Backup in Progress" , 
                     Toast.LENGTH_LONG);
                     toast.show();

                 }

         }
     });}

Класс BackupThread

class BackupThread extends Thread {
BackupRestore.Backup backup;

BackupThread(BackupRestore.Backup obj)
{
    this.backup=obj;
}


@Override
public void run() {

    backup.overallbackup();
    backup.dbbackup();
    backup.deletetempfolder();

}

1 Ответ

0 голосов
/ 30 марта 2020

Если быть точным,

Thread.isAlive () возвращает значение true, если поток был запущен (возможно, еще не запущен), но еще не завершил свой метод выполнения.

Thread.getState () возвращает точное состояние потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...