Ví dụ: bạn sẽ làm điều gì đó sẽ mất vài giây và không muốn đóng băng giao diện người dùng của mình, phải không? Bạn có thể sử dụng một AsyncTask nhưng bạn không muốn tạo ra một lớp bên ngoài (hoặc bên trong) để giải quyết một vấn đề đóng băng nhỏ.Thực hành tốt có tạo AsyncTask ẩn danh cho quy trình đóng băng nhỏ được biết đến song song không?
Vì vậy, liệu có phải là một công cụ hay không?
package com.example.stackoverflowsandbox;
import android.os.AsyncTask;
public class Foo {
// E.g. before call foo method you change you Activity to loading state.
private void foo() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(final Void ... params) {
// something you know that will take a few seconds
return null;
}
@Override
protected void onPostExecute(final Void result) {
// continue what you are doing...
Foo.this.continueSomething();
}
}.execute();
}
private void continueSomething() {
// some code...
}
}
Tôi đã gặp phải điều đó khi tôi nén Bitmaps và lặp mảng lớn để cập nhật một số dữ liệu bên trong các mục.
Tôi không thấy cách này tiết kiệm bất kỳ công việc nào so với việc tạo ra một lớp bên trong, chỉ trông có vẻ lộn xộn khủng khiếp IMO – tyczj
Nó phụ thuộc ... những gì có thể xảy ra là Chủ đề (AsyncTask) tiếp tục chạy sau khi Hoạt động được đặt trong nền hoặc bị hủy. Nhưng nói chung điều này là khủng khiếp, bởi vì lớp vô danh được mượn ở đâu đó trong mã. –
chỉ cho một câu hỏi dễ đọc, hãy nhớ rằng các đối tượng tạo từ lớp bên trong vô danh được gọi với ký hiệu 'OuterClass $ 2', và nếu bạn bắt đầu lồng vào lớp bên trong, debuggin có thể khó khăn – Blackbelt