Trước khi Android 2.0 nó đã có thể thiết lập một dịch vụ cho foreground bằng cách sử dụng phương pháp setForeground. Phương pháp này đã được chấp nhận và sẽ dẫn đến một NOP (không có hoạt động thực hiện), làm có hiệu quả gì.
SỬ DỤNG CƠ SỞ đề
năng đáp ứng là một trong những thuộc tính quan trọng nhất của một ứng dụng Android tốt. Để đảm bảo rằng ứng dụng của bạn phản ứng nhanh chóng với bất kỳ tương tác người dùng hoặc sự kiện hệ thống, điều quan trọng là bạn di chuyển tất cả các xử lý và I / O hoạt động tắt các ứng dụng chính đề và vào một con đề.
Thành phần ứng dụng Tất cả Android - bao gồm cả các hoạt động, dịch vụ, và Broadcast thu - bắt đầu vào các ứng dụng chính đề. Kết quả là, thời gian xử lý trong bất kỳ thành phần sẽ chặn tất cả các thành phần khác, bao gồm cả dịch vụ và các Hoạt động nhìn thấy được.
Trong Android, hoạt động mà không đáp ứng với một sự kiện đầu vào (chẳng hạn như một phím bấm) trong vòng 5 giây, và Broadcast Người nhận không hoàn thành xử lý onReceive của họ trong vòng 10 giây, được con¬sidered không phản hồi.
không chỉ làm bạn muốn tránh kịch bản này, nhưng bạn thậm chí không muốn đến gần. Trong thực tế, người dùng sẽ nhận thấy độ trễ đầu vào và giao diện người dùng tạm dừng hơn một vài trăm mili giây.
Điều quan trọng là phải sử dụng đề nền cho bất kỳ chế biến không tầm thường mà không trực tiếp inter¬act với giao diện người dùng. Nó đặc biệt quan trọng đối với lịch trình hoạt động tập tin, tra cứu mạng, các giao dịch cơ sở dữ liệu, và các tính toán phức tạp trên một nền chủ đề.
Android cung cấp một số lựa chọn thay thế cho việc di chuyển xử lý của bạn để nền. Bạn có thể thực hiện chủ đề của riêng bạn và sử dụng lớp Handler để đồng bộ hóa với các giao diện chủ đề trước khi cập nhật giao diện người dùng. Ngoài ra, lớp AsyncTask cho phép bạn xác định một hoạt động được thực hiện trong nền và cung cấp xử lý sự kiện cho phép bạn giám sát tiến độ và gửi kết quả về GUI đề.
Sử dụng AsyncTask để chạy nhiệm vụ không đồng bộ
Các lớp AsyncTask thực hiện một mô hình thực hành tốt nhất cho chuyển hoạt động tốn nhiều thời gian của bạn vào một nền chủ đề và đồng bộ hóa với giao diện người dùng đề cập nhật và khi process¬ing hoàn tất. Nó cung cấp sự tiện lợi của xử lý sự kiện đồng bộ với giao diện chủ đề để cho bạn cập nhật và xem các yếu tố giao diện người dùng khác để báo cáo tiến độ hoặc xuất bản kết quả khi nhiệm vụ của bạn là hoàn tất.
AsyncTask xử lý tất cả các tạo chủ đề, quản lý và đồng bộ, tạo điều kiện cho bạn để cre¬ đã ăn một nhiệm vụ không đồng bộ bao gồm chế biến được thực hiện trong các bản cập nhật nền và giao diện người dùng được thực hiện cả trong quá trình chế biến, và một khi nó hoàn thành.
AsyncTasks là một giải pháp tốt cho xử lý nền ngắn ngủi mà tiến độ và kết quả cần được phản ánh trên giao diện người dùng. Tuy nhiên, chúng không tồn tại qua khởi động lại hoạt động - có nghĩa là AsyncTask của bạn sẽ bị hủy bỏ nếu sự định hướng của thay đổi thiết bị, gây ra các Hoạt động bị phá hủy và tái tạo. Đối với quá trình nền chạy lâu hơn, chẳng hạn như tải dữ liệu từ Internet, một thành phần dịch vụ là một cách tiếp cận tốt hơn.
Tương tự như vậy, Máy bốc hàng Cursor được tối ưu hóa tốt hơn cho các trường hợp sử dụng của nhà cung cấp hoặc cơ sở dữ liệu kết quả nội dung.
Tạo mới không đồng bộ Nhiệm vụ
Mỗi thực hiện AsyncTask có thể chỉ định các loại tham số sẽ được sử dụng cho các thông số đầu vào, các giá trị tiến bộ, báo cáo, và giá trị kết quả. Nếu bạn không cần hoặc muốn lấy các thông số đầu vào, cập nhật tiến độ, hoặc báo cáo kết quả cuối cùng, chỉ cần xác định Void cho bất kỳ hoặc tất cả các loại yêu cầu.
Để tạo ra một nhiệm vụ không đồng bộ mới, mở rộng các lớp AsyncTask, quy định cụ thể các loại tham số để sử dụng, như thể hiện trong các mã bộ xương của Liệt kê 9-11.
đang được dịch, vui lòng đợi..
