2012-06-02 33 views
7

Tôi không phải là chuyên gia Android mặc dù tôi đã phát triển một ứng dụng bao gồm hơn 50 hoạt động giúp ứng dụng thực sự lớn. Sau 8 tuần phát triển, hiện tại có nhiều vấn đề khiến ứng dụng khó duy trì và nâng cấp. Các vấn đề chính mà tôi đang xử lý làAndroid: Hoạt động đơn lẻ, nhiều chế độ xem

  1. Tôi không thể chuyển đối tượng tham chiếu đến các nhà thầu của hoạt động. Trong thực tế, tôi thấy các cơ chế của startActivityForResult - Intent - onActivityResult thực sự hạn chế và dẫn đến mã bẩn của nhiều hằng số cho các hành động trên mỗi hoạt động và rất nhiều switchcase thực sự khó theo dõi luồng ứng dụng.

  2. Một vấn đề khác là tôi không biết cách quản lý vòng đời của toàn bộ ứng dụng vì mỗi hoạt động đều có vòng đời riêng.

tôi đã có một số kinh nghiệm thành công với LWUITJ2ME – polish mà bỏ qua MIDlets J2ME (tương tự như hoạt động android) và thực hiện các kiến ​​trúc riêng của họ và hệ thống cửa sổ chỉ với một MIDlet như nhập cảnh vào ứng dụng. Tôi đã nghĩ ra cùng một ý tưởng cho android.

Để làm rõ, tôi đang nghĩ đến một ứng dụng chỉ với một chính Activity và các hoạt động khác được triển khai làm đối tượng mở rộng đối tượng View và các chế độ xem này có thể được thêm động vào hoạt động chính FrameLayout và xếp chồng lên nhau. Logic của hoạt động có thể được thực hiện trong các lớp như vậy và tôi thậm chí còn tìm thấy cách để triển khai các hộp thoại theo cách này. Các đối tượng kinh doanh và trạng thái có thể được truyền cho hàm khởi tạo của chúng và có vẻ như bỏ qua tác dụng phụ của nó khi viết một mã nhỏ hơn. Bằng cách này, người nghe cũng có thể được chuyển đến các nhà xây dựng của lượt xem, giúp việc chuyển đổi giao diện người dùng ứng dụng và quản lý luồng dễ dàng hơn.

Nhưng câu hỏi là:

  • Có một thực hành tốt?
  • Nó sẽ không dẫn tôi đến các vấn đề hiệu năng hay bộ nhớ?

Tôi cũng nhận thức

Không ai trong số những địa chỉ rõ những vấn đề liên quan đến hiệu suất hoặc thực hành với bằng chứng hợp lý hoặc tham khảo tài liệu

Hãy nhờ ai đó giúp tôi với điều này

+0

Khi dự án quá lớn, mã phải được thiết kế đúng cách, hãy rút tất cả các chức năng phổ biến ra ngoài. cấu trúc dữ liệu tốt hơn (cấu trúc dữ liệu tốt hơn). Những điều này sẽ theo tôi giúp giảm rất nhiều mã. – sat

+0

trên thực tế tôi đã làm điều đó. Tôi đã theo một mẫu MVVM bán mặc dù Android không hỗ trợ ràng buộc dữ liệu. các vấn đề chính nằm trong lớp giao diện người dùng và chuyển đổi chế độ xem và phát sáng togather. – anonim

Trả lời

6

Có những ứng dụng phổ biến trên thị trường chỉ với một hoặc một vài hoạt động. Họ sử dụng các mảnh vỡ và chuyển đổi chúng. Tôi thích những mảnh vỡ hơn cách tiếp cận của bạn. Mặc dù tôi nghĩ rằng các mảnh quá phức tạp cho nhiều mục đích, cho trường hợp sử dụng của bạn, nó sẽ là một giải pháp tốt. Hành vi giao diện người dùng của bạn phải ở dạng mảnh và hoạt động của bạn là phần điều khiển truyền dữ liệu giữa các đoạn của bạn. Các mảnh vỡ cũng có vòng đời riêng.

Tôi không thích startActivityForResult một trong hai.Nếu tôi có một tập hợp các hoạt động - tất cả cung cấp dữ liệu - và tôi không biết thứ tự chúng sẽ được gọi, tôi thích sử dụng một lớp đơn sau đó sử dụng ý định để truyền dữ liệu giữa các hoạt động. Nhưng bạn phải phân tích vấn đề của mình để có được một giải pháp tốt.

+0

Thực ra tôi cũng khai thác mẫu đơn như ứng dụng là người dùng đơn lẻ nhưng vấn đề của tôi là với Intent. Tôi không thể tuần tự hóa các thính giả và chuyển chúng thành các hoạt động khác để xử lý gọi lại dựa trên các hành động của người dùng và về Fragment, tôi hoàn toàn đồng hành cùng bạn, tuy nhiên khi tôi bắt đầu dự án, tôi đã không biết các mảnh vỡ và bây giờ ở giữa thời gian dự án tôi sợ sử dụng chúng vì tôi không hoàn toàn quen thuộc với chúng. Tôi có thể sử dụng chúng trong phiên bản tiếp theo của ứng dụng. Cảm ơn – anonim

+4

Làm thế nào điên nó sẽ được xây dựng một khuôn khổ MVC thích hợp trên Android bằng cách sử dụng một hoạt động duy nhất là hòa giải giữa các bộ điều khiển và phần còn lại của khung Android? Tương tự như những gì đang xảy ra trong thế giới web với các ứng dụng một trang. Tin nhắn/Gửi email cho tôi nếu bạn quan tâm đến việc cộng tác về điều này. :) – Marchy

+0

Im bussy vào lúc này nhưng nếu bạn bắt đầu như một dự án bạn có thể liên hệ với tôi có thể có thể là tôi có thể dành một chút thời gian trong tương lai cho điều đó. –

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