50 câu hỏi 60 phút
Trong Android, để thực hiện các tác vụ lặp đi lặp lại (repeated tasks), nên sử dụng gì?
TimerTask
LoopTask
ScheduledExecutorService
CountDownTimer
Trong Android, để thực hiện các tác vụ lặp đi lặp lại (repeated tasks), chúng ta nên sử dụng ScheduledExecutorService
. Dưới đây là lý do tại sao các phương án khác không phù hợp:
TimerTask
: TimerTask
là một abstract class có thể được kế thừa để thực hiện một tác vụ, thường được sử dụng với Timer
. Tuy nhiên, Timer
có một số hạn chế, ví dụ như chỉ có một thread duy nhất thực thi các tác vụ, nếu một tác vụ chậm có thể ảnh hưởng đến các tác vụ khác.LoopTask
: Không có class hoặc concept nào tên là LoopTask
trong Android SDK.ScheduledExecutorService
: Đây là một interface cho phép scheduling các command để chạy sau một khoảng thời gian nhất định, hoặc thực hiện định kỳ. Nó cung cấp nhiều tính năng hơn so với Timer
, bao gồm khả năng sử dụng thread pool để thực thi các tác vụ song song, và xử lý các exception một cách tốt hơn.CountDownTimer
: CountDownTimer
thường được sử dụng để thực hiện một tác vụ sau một khoảng thời gian nhất định, và có thể gọi callback sau mỗi tick. Nó không phù hợp để thực hiện các tác vụ lặp đi lặp lại.Do đó, ScheduledExecutorService
là lựa chọn tốt nhất để thực hiện các tác vụ lặp đi lặp lại trong Android.
50 câu hỏi 60 phút
45 câu hỏi 60 phút
50 câu hỏi 60 phút
22 câu hỏi 60 phút
50 câu hỏi 60 phút
50 câu hỏi 60 phút
50 câu hỏi 60 phút
50 câu hỏi 60 phút
50 câu hỏi 60 phút
50 câu hỏi 60 phút
Trong Android, để thực hiện các tác vụ lặp đi lặp lại (repeated tasks), chúng ta nên sử dụng ScheduledExecutorService
. Dưới đây là lý do tại sao các phương án khác không phù hợp:
TimerTask
: TimerTask
là một abstract class có thể được kế thừa để thực hiện một tác vụ, thường được sử dụng với Timer
. Tuy nhiên, Timer
có một số hạn chế, ví dụ như chỉ có một thread duy nhất thực thi các tác vụ, nếu một tác vụ chậm có thể ảnh hưởng đến các tác vụ khác.LoopTask
: Không có class hoặc concept nào tên là LoopTask
trong Android SDK.ScheduledExecutorService
: Đây là một interface cho phép scheduling các command để chạy sau một khoảng thời gian nhất định, hoặc thực hiện định kỳ. Nó cung cấp nhiều tính năng hơn so với Timer
, bao gồm khả năng sử dụng thread pool để thực thi các tác vụ song song, và xử lý các exception một cách tốt hơn.CountDownTimer
: CountDownTimer
thường được sử dụng để thực hiện một tác vụ sau một khoảng thời gian nhất định, và có thể gọi callback sau mỗi tick. Nó không phù hợp để thực hiện các tác vụ lặp đi lặp lại.Do đó, ScheduledExecutorService
là lựa chọn tốt nhất để thực hiện các tác vụ lặp đi lặp lại trong Android.
Trong ngữ cảnh của việc tạo ra một đơn vị mã có thể mở rộng hoặc thu gọn trong method signature (chữ ký phương thức), chúng ta cần xem xét cách các ký hiệu khác nhau thường được sử dụng trong lập trình, đặc biệt là trong việc định nghĩa các tham số hoặc khối mã.
Do đó, dấu ngoặc đơn ()
là lựa chọn phù hợp nhất để tạo ra một đơn vị mã có thể mở rộng hoặc thu gọn trong method signature, vì nó cho phép định nghĩa các tham số mà có thể tùy chỉnh số lượng hoặc loại.
A. AsyncTask:
AsyncTask cho phép thực hiện các tác vụ nền một cách dễ dàng và trực tiếp từ luồng giao diện người dùng. Nó cung cấp các phương thức như doInBackground()
(thực hiện tác vụ nền), onPreExecute()
(chuẩn bị trước khi thực hiện), onPostExecute()
(xử lý kết quả sau khi thực hiện) và onProgressUpdate()
(cập nhật tiến trình), giúp dễ dàng quản lý và tương tác với giao diện người dùng trong quá trình thực hiện tác vụ nền.
B. IntentService:
IntentService cũng được sử dụng cho các tác vụ nền, nhưng nó tự động xử lý các yêu cầu tuần tự trên một luồng làm việc duy nhất. IntentService thích hợp cho các tác vụ cần thực hiện lần lượt và không cần tương tác trực tiếp với giao diện người dùng.
C. Handler:
Handler cho phép gửi và xử lý các Message và Runnable liên quan đến một luồng (thread). Nó thường được sử dụng để giao tiếp giữa các luồng, nhưng việc quản lý luồng và tác vụ nền phức tạp hơn so với AsyncTask hoặc IntentService.
D. BroadcastReceiver:
BroadcastReceiver dùng để nhận các broadcast từ hệ thống hoặc ứng dụng khác và phản hồi lại. Nó không được thiết kế để thực hiện các tác vụ nền dài hạn.
Trong trường hợp này, AsyncTask là lựa chọn phù hợp nhất vì nó được thiết kế đặc biệt để thực hiện các tác vụ nền ngắn hạn và tương tác với giao diện người dùng.
Which component property should be changed to a name that is specific of the components use?
Để chuyển dữ liệu phức tạp giữa các Activity trong Android, ta thường sử dụng đối tượng nào?
Trong Android, để quản lý phiên làm việc của người dùng, bạn thường sử dụng phương pháp nào?