2011-01-21 39 views
26

Mẫu này tương tự như mẫu Servlet chính (Bộ điều khiển mặt trước) được sử dụng để phát triển các ứng dụng web.Mẫu "Một hoạt động, nhiều chế độ xem": Ưu điểm và nhược điểm

Ý tưởng chính của mẫu này: chúng tôi có một Hoạt động quản lý nhiều lượt xem và hoạt động này chịu trách nhiệm đại diện cho nội dung hiện tại. Không phải tất cả các chế độ xem đều cần chức năng hoạt động (ví dụ: phương pháp vòng đời) để câu hỏi chính là: nếu tôi có thể đi mà không có hoạt động tại sao tôi phải sử dụng?


tôi đã tìm thấy những nhược điểm sau đây của việc sử dụng mô hình này:

  1. nguồn chính thức không khuyên bạn nên Overload a Single Activity Screen nhưng họ không giải thích lý do tại sao.

  2. Chúng tôi không thể sử dụng TabActivity, ListActivity, MapActivity. Nhưng có một số thủ thuật để đi mà không có chúng.

  3. Nếu các màn hình khác nhau có trình đơn khác nhau, đó là vấn đề khiến điều đó không có hoạt động.
  4. Nó là cần thiết để giữ cho lịch sử của chính chúng ta. Nhưng nó không quá khó để phát triển.

tôi đã tìm thấy những ưu điểm sau đây của việc sử dụng mô hình này:

  1. Đó là nhanh hơn để thay đổi nội dung hoạt động hiện tại hơn để bắt đầu một hoạt động
  2. Chúng tôi có thể tự do quản lý lịch sử như chúng ta muốn
  3. Nếu chúng ta chỉ có một hoạt động ngữ cảnh nó đơn giản để tìm và giải quyết vấn đề với bộ nhớ bị rò rỉ

gì làm bạn thi nk về mô hình này? Bạn có thể cung cấp bất kỳ ưu điểm/nhược điểm nào khác không?

Trả lời

59

Chúng tôi không thể sử dụng TabActivity, ListAcivity, MapActivity. Nhưng có một số thủ thuật để đi mà không có chúng.

Bạn phải sử dụng MapActivity nếu bạn muốn sử dụng MapView. Bạn phải sử dụng PreferenceActivity nếu bạn muốn sử dụng XML tùy chọn.

Cần phải tự giữ lịch sử. Nhưng nó không quá khó để phát triển.

Khó khăn trong việc quản lý lịch sử của riêng bạn sẽ phụ thuộc rất nhiều vào những gì lịch sử cần. Lịch sử thực hiện cho một trình hướng dẫn đơn giản sẽ khá dễ dàng. Tuy nhiên, đó là một kịch bản đặc biệt đơn giản. Có một số tiền hợp lý của mã quản lý lịch sử trong Android mà bạn sẽ phải viết lại cho các trường hợp tùy ý khác.

Bạn cũng quên:

# 5.Bạn sẽ dễ bị rò rỉ bộ nhớ, bởi vì bạn sẽ quên dọn dẹp nội dung, và Android sẽ không dọn dẹp thứ gì (vì nó giả định rằng bạn sẽ sử dụng nhiều hoạt động nhỏ, theo cách họ khuyên dùng).

# 6. Quản lý nhà nước của bạn để thay đổi cấu hình (xoay, dock, thay đổi SIM, thay đổi ngôn ngữ, hiển thị nhiều, tỷ lệ phông chữ) sẽ phức tạp hơn bởi vì bây giờ bạn cũng phải tìm ra những thứ bổ sung (ví dụ: lịch sử) cần phải là một phần của tiểu bang và bạn đã đối phó với tất cả chúng cùng một lúc thay vì hoạt động-tại-một-thời gian.

# 7. Có nhiều điểm nhập cho ứng dụng của bạn trở nên khó khăn hơn (ví dụ: nhiều biểu tượng trong trình khởi chạy, tiện ích ứng dụng liên kết với một số hoạt động khác với hoạt động chính, phản hồi v.v.).

Đó là nhanh hơn để thay đổi nội dung hoạt động hiện tại hơn để bắt đầu một hoạt động

Đối với hầu hết các thiết bị Android hiện đại, sự khác biệt tốc độ sẽ không đáng kể đối với hầu hết người dùng, IMHO.

Nếu chúng ta chỉ có một hoạt động ngữ cảnh nó đơn giản để tìm và giải quyết vấn đề với bộ nhớ bị rò rỉ

Trừ rằng bạn vẫn có nhiều hơn "một hoạt động ngữ cảnh". Hãy nhớ rằng: hoạt động của bạn, lớn hay nhỏ, vẫn bị phá hủy và được tái tạo trên các thay đổi cấu hình.

Bạn nghĩ gì về mẫu này?

Coase's "nature of the firm" theory nói rằng các chi phí giao dịch để làm việc nội bộ trở nên cao hơn chi phí giao dịch để các công ty khác làm điều tương tự.

Lý thuyết "tính chất hoạt động" của Murphy cho biết hoạt động mở rộng cho đến khi chi phí giao dịch làm việc nội bộ trở nên cao hơn chi phí giao dịch để có các hoạt động khác thực hiện tương tự. Nhà phát triển Android sẽ có xu hướng hướng tới mô hình "giao dịch người dùng" cho các hoạt động - những thứ được kết hợp chặt chẽ (ví dụ: các bước trong thuật sĩ) sẽ có xu hướng được xử lý trong hoạt động đơn lẻ và những thứ có ít mối quan hệ (ví dụ: duyệt so với tìm kiếm so với cài đặt so với trợ giúp so với về) sẽ có xu hướng được xử lý trong các hoạt động riêng biệt.

+9

Nếu tôi chỉ có thể bỏ phiếu nhiều lần. –

+3

Tuyệt vời! Tại sao chúng ta không có nút 'like' hay 'share' ở đây !? :-P –

+0

Bạn nói rằng chúng tôi phải sử dụng listactivity, mapactivity, vv Tôi cần bao gồm một danh sách và một bản đồ trong một chế độ xem. Làm thế nào tôi có thể làm điều đó nếu tôi đã sử dụng các hoạt động premade? – Moulde

2

Điều này sẽ rất kinh khủng nếu duy trì chức năng mới sau này. Tôi cũng không tin rằng sẽ nhanh hơn rất nhiều mà người dùng có thể nhận thấy. Có các thành phần như các phần nhỏ hơn dễ thay đổi hoặc hoán đổi chắc chắn là cách để đi.

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