30/09/2018, 19:45

Sử dụng vòng lặp vô hạn trong android như sau có ổn không

Chẳng là em muốn tạo một câu text Toast.makeText cứ mỗi 5s lại hiện lên 1 lần nên em kết hợp giữa vòng lặp vô hạn và AsyncTask như sau:

private class Mytask extends AsyncTask<Void, Integer, Void>
    {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

        }
        @Override
        protected Void doInBackground(Void... params) {
//vòng lặp vô hạn
            int i = 0;
            Random random= new Random();
            while (i<1){
                int rand = random.nextInt(40);
                publishProgress(rand);
                if(isCancelled()) break;
                SystemClock.sleep(5000);
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
        }
        @Override
        protected void onProgressUpdate(Integer... values){
            super.onProgressUpdate(values);
// Hiển thị Text update
            Toast.makeText(FloatingWindow.this, "values "+values[0], Toast.LENGTH_SHORT).show();
        }

    }

Debug thử thì chạy ngon lành, nhưng em muốn hỏi về lâu dài có lỗi không, em hỏi vậy vì nếu bỏ “đa tiến trình” AsyncTask ra thì sẽ báo lỗi do vòng lặp vô hạn làm tràn bộ nhớ hay gì đó.

Mai Anh Dũng viết 21:58 ngày 30/09/2018

Đạt thấy Android có hỗ trợ class ScheduledThreadPoolExecutor để thực hiện các thao tác lặp đi lặp lại.

http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html

Bạn nên sử dụng các công cụ Android hỗ trợ sẵn thì chương trình chạy sẽ ổn định hơn

terrypaton viết 22:00 ngày 30/09/2018

ScheduledThreadPoolExecutor

ồ để mình tìm hiểu thử

Bài liên quan
0