2012-04-06 32 views
11

Khi tôi bắt đầu dự án Android của mình, tôi đã hiểu nhầm rằng mọi màn hình được hiển thị trong ứng dụng phải là một hoạt động mới. Bây giờ tôi đã hoàn thành với dự án, tôi đã kiểm tra nó trên giả lập của tôi cũng như trên một vài điện thoại Android. Cho đến nay tôi không chứng kiến ​​bất kỳ vấn đề, nhưng gần đây tôi đọc một nơi nào đó rằng quá nhiều hoạt động trong ứng dụng là một ý tưởng khá xấu.Quá nhiều hoạt động trong Android?

Hiện tại, đơn đăng ký của tôi có khoảng 15-20 hoạt động. Tôi thực sự nghe nói rằng khoảng 5-6. Tôi có cần phải tái cấu trúc mã của tôi hoặc chỉ hoàn thành mọi hoạt động sau khi nó đã làm nó là một phần là đủ?

Trả lời

30

Trong khi tạo các ứng dụng phức tạp, bạn nhất định cần tạo nhiều hoạt động. Vì vậy, nó phụ thuộc vào ứng dụng của bạn có bao nhiêu hoạt động bạn cần. Không có hoạt động nào trong một dự án không ảnh hưởng đến hiệu suất.

Hiệu ứng được tạo ra bởi số lượng hoạt động trong ngăn xếp Android của bạn. Vì vậy, tốt hơn là giữ 5-6 hoạt động trong ngăn xếp (Kết thúc các hoạt động nếu chúng không cần thiết nữa).

Vì vậy, hãy tạo bao nhiêu Hoạt động theo yêu cầu của ứng dụng nhưng không mở nhiều Hoạt động tại một thời điểm.

+2

+1 để có giải thích tốt đẹp. – Deva

+0

Làm thế nào để kết thúc hoạt động? –

+1

Tôi có 15 hoạt động mà người dùng liên tục mở. Tôi có cần phải làm gì để đóng hoạt động trước đó không? Cảm ơn! (+1) –

2

Cuối cùng phụ thuộc vào những gì bạn đang làm. Có một số lần bạn không thể sửa đổi chế độ xem đủ để tạo sự khác biệt. Lý tưởng nhất, 5-6 hoạt động là rất tốt, nhưng một số trường hợp đó không chỉ không thể thực hiện được. Tôi đã làm một ứng dụng di động với khoảng 40 lớp khác nhau và khoảng 18 hoạt động. Nó chỉ HAD được thực hiện theo cách đó dựa trên cách ứng dụng tương tác với người dùng. Nếu bạn có thể hợp nhất 2 hoặc 3 hoạt động thành một, điều đó thật tuyệt. Nó cũng sẽ giúp kích thước tập tin và tối ưu hóa, nhưng nếu bạn không thể- Đừng băn khoăn về nó quá nhiều.

1

Tôi sẽ nói 15 màn hình khác nhau = 15 hoạt động khác nhau. Tôi nghĩ một trong những lý do có thể làm giảm số lượng hoạt động là do sự ra đời của các mảnh vỡ. Mặc dù người ta sẽ tranh luận tại sao lại sử dụng các mảnh vụn nếu các hoạt động cá nhân hoạt động. Tôi đoán nó phụ thuộc vào sở thích của nhà phát triển.

+0

Trừ khi bạn đang làm điều gì đó trông đẹp trên máy tính bảng và đang sử dụng phân đoạn. –

+0

Tôi có 15 hoạt động mà người dùng liên tục mở. Tôi có cần phải làm gì để đóng hoạt động trước đó không? Cảm ơn! (+1) –

3

Hệ thống Android cố gắng duy trì quy trình đăng ký càng lâu càng tốt, nhưng cuối cùng cần xóa các quy trình cũ để lấy lại bộ nhớ cho các quy trình mới hoặc quan trọng hơn. Điều này áp dụng cho Activity s đang chạy ở chế độ nền ... cũ Activity s được quản lý cho bạn và bị hủy khi hệ thống cần lấy lại bộ nhớ cho các quy trình mới.

đó đang được nói, tôi nghĩ rằng có hai điều bạn nên cân nhắc:

  1. tài kinh nghiệm. Ứng dụng của bạn có thực sự yêu cầu 15-20 Activity s không? Bạn có thể cắt giảm số màn hình bằng cách nào đó không? Ít hơn Activity s thường tốt hơn vì nó đòi hỏi ít tương tác hơn khi người dùng đang điều hướng ứng dụng.

  2. Thiết kế mã. Trong khi mỗi Activity sẽ có một lớp riêng biệt, điều này không hạn chế bạn đưa ra quyết định thiết kế thông minh khi triển khai ứng dụng của bạn. Ví dụ: bạn có thể thử nhóm tương tự Activity s bằng cách để chúng mở rộng abstract class. Khi các dự án Android phát triển về quy mô, chúng trở nên khó quản lý hơn. Chia sẻ mã giữa các lớp tương tự theo cách này sẽ đảm bảo rằng bạn có thể thực hiện các thay đổi đơn giản cho cốt lõi của ứng dụng mà không gặp quá nhiều rắc rối.

+0

Tôi có 15 hoạt động mà người dùng liên tục mở. Tôi có cần phải làm gì để đóng hoạt động trước đó không? Cảm ơn! (+1) –

6

Nếu dự án của bạn có nhiều hoạt động nhưng một số hoạt động không quan trọng, điều đó có nghĩa là bạn không cần bất kỳ hoạt động nào sau khi hoạt động khác bắt đầu.

Trong manifest tập tin thiết lập: android:noHistory="true"

Ví dụ:

Activity1 -> Activity2 -> Activity3 -> Activity4..................-> Activity20 

Trong file manifest:

activity android:name=".Activity1" android:label="@string/app_name" android:noHistory="true" 

nếu u gọi lại Activity1 sử dụng Ý định hơn bộ kết thúc() trước khi startActivity()

Tôi nghĩ rằng điều này có thể giúp bạn

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