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ì đó.

Đạ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 :stuck_out_tongue_winking_eye:

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

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?