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ì đó.
Bài liên quan
Đạ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
ồ để mình tìm hiểu thử