2013-05-28 25 views
8

Tôi đã tạo ứng dụng android trong vài tháng và tôi đang gặp sự cố với mục đích sử dụng Fragments.Android: Mục đích sử dụng các đoạn với dịch vụ, hộp thoại, v.v.

Fragments được cho là các thành phần giao diện người dùng có thể sử dụng lại nhưng bạn làm cách nào để chúng đứng độc lập?

Một trong số Fragments Tôi đã tạo là ListFragment video có thể tải xuống. Tại thời điểm này, tôi đã triển khai tất cả các phương thức bên trong Fragment với rất ít hoặc không có phương pháp nào gọi tới máy chủ Activity. Fragment gọi số Activity cho một số thứ nhỏ nhưng mọi thứ như tải xuống tệp và tìm chúng trên bộ nhớ ngoài được thực hiện bởi Fragment.

90% thời gian tôi thấy đó là cách dễ nhất để triển khai nhưng có một số lần nó không hoạt động.

Ví dụ là hộp thoại xác nhận để xóa video trong số ListFragment của tôi. Hộp thoại là DialogFragment do đó được gắn vào Activity nhưng tất cả các phương thức cập nhật và xóa giao diện người dùng đều nằm trong số ListFragment. Vì vậy, tôi kết thúc với số điện thoại DialogFragment gọi số Activity chỉ để gọi số ListFragment.

Ví dụ khác có liên quan đến Service. Tôi có ràng buộc số Activity vào số Service hoặc chỉ Fragment không? Các Activity không sử dụng cho Service nhưng là một Fragment nghĩa vụ phải làm tất cả các công việc bắt đầu và duy trì một Service? Nếu không có nghĩa là tất cả các cuộc gọi Fragments đến Service phải trải qua Activity để Fragment không còn độc lập nữa.

Tôi tự hỏi nếu tôi đang lấy ý tưởng độc lập quá xa, có phải là Fragment thay vì được cho là độc lập tối thiểu và thực sự dựa vào việc lưu trữ một số hạng nặng không?

Cảm ơn bạn đã được trợ giúp.

Trả lời

5

Một câu hỏi rất thú vị!

Tôi thường cố gắng giữ các mảnh vỡ của mình càng tách biệt càng tốt. Điều đó có nghĩa là tôi thường không cho họ biết về bất cứ điều gì xung quanh họ ngoại trừ hoạt động của riêng họ. Đó là vai trò của hoạt động (nếu bạn hỏi tôi) để cung cấp những gì cần thiết cho mảnh vỡ.

Trong thực tế, điều này có nghĩa là các đoạn của tôi không bao giờ sở hữu nội dung của riêng họ, như nhà cung cấp nội dung hoặc DAO tùy chỉnh. Hoạt động (hoặc - Thiên Chúa cấm - ứng dụng) sở hữu nó và sau đó chỉ cung cấp một tập con của dữ liệu, như một con trỏ, một đối tượng miền hoặc một bộ điều hợp, cho đoạn.

Điều này cũng có nghĩa là khi một đoạn thay đổi một mục, nó phải yêu cầu hoạt động duy trì các thay đổi. Hoặc nếu một mục bị xóa, mảnh đó phải yêu cầu hoạt động hiển thị giao diện người dùng tương ứng cho hoạt động đó (có, về mặt kỹ thuật có thể để mảnh vỡ hiển thị một đoạn khác, nhưng tôi thường cố gắng tránh nó càng nhiều càng tốt) .

Khi nói đến dịch vụ và ràng buộc với họ, tôi thực sự không biết những gì để đề xuất vì nó thực sự phụ thuộc vào dịch vụ và những gì nó đang làm. Nếu bạn đang tải xuống nội dung mới từ internet trong dịch vụ của mình, thì có vẻ như đã được chỉnh sửa để cho phép hoạt động xử lý ràng buộc (vì đó là hoạt động cần lưu dữ liệu, theo thảo luận trước).Mặt khác, nếu bạn tính toán một cái gì đó cụ thể, dựa trên dữ liệu bị cô lập của bạn (ví dụ: giải mã một tệp hoặc như vậy), thì có thể tạo ra hàng rào để cho đoạn đó xử lý phần đó.

Trong một viễn cảnh lớn hơn, người ta sớm nhận ra rằng thiết lập, như mô tả ở trên, sẽ sinh ra một số giao diện gọi lại vì mỗi đoạn cần thiết lập hợp đồng cho hoạt động của nó. Do đó, đối với các dự án nhỏ hơn đôi khi nó xảy ra mà tôi ghi đè những mảnh vỡ riêng của mình.

Tôi cũng không thể không nhận thấy rằng khi sử dụng các đoạn, các ứng dụng của tôi có xu hướng định hướng MVC rất tốt trong kiến ​​trúc của chúng. Tôi để nó cho bạn và bất kỳ độc giả nào trong tương lai để quyết định thời tiết đó là một điều tốt hay xấu ;-)

Chúc mừng

+0

Chắc chắn, nhờ một câu trả lời như vậy. –

+0

Cảm ơn! Tôi rất vui khi chia sẻ kinh nghiệm của tôi và thậm chí hạnh phúc hơn khi bạn thấy nó hữu ích :-) – dbm

Các vấn đề liên quan