2010-01-25 35 views
36

Tôi đã nhìn xung quanh, vô ích, đối với một số thông tin về cách sử dụng một container tiêm phụ thuộc trong phát triển Android. Cụ thể, làm thế nào để ghi đè lên việc tạo ra một Activity trong một cách mà cũng sẽ làm việc khi trở lại từ bị giết (vì lý do gì).Android và Dependency Injection

Có ai có kinh nghiệm nào trong lĩnh vực này không?

+0

Nếu bạn kết thúc bằng http://code.google.com/p/roboguice roboguice, tôi rất muốn có thông tin phản hồi của bạn. Tôi khuyến khích bạn tham gia nhóm google và cho chúng tôi biết trải nghiệm của bạn như thế nào. – emmby

Trả lời

25

Dường như bạn có thể sử dụng Google Guice 2.0 bằng Android. Bạn cũng có thể xem xét roboguice.

Edit:

mùa xuân là also now available for Android

Edit: Roboguice hiện đang bị phản đối. Bạn có thể thử Toothpick như đã đề cập trong phần bình luận của nhà phát triển phía sau tăm xỉa răng.

+0

Cảm ơn, có vẻ như roboguice là gần nhất tôi sẽ nhận được nó. Nó sử dụng thừa kế ('GuiceActivity') và thực hiện tiêm trên' setContentView', nhưng sau khi kiểm tra 'call' tạo callstack tôi có thể thấy không có cách nào khác. –

+0

Bằng cách này Richard, RoboGuice bây giờ không tiêm trong hai bước. Một lần trong onCreate cho hầu hết các tiêm, và một lần trong setContentView cho View injections. – emmby

+1

RoboGuice, hiện không còn được dùng nữa, bạn nên dùng thử tại Toothpick, chúng có hầu như cùng một API. https://github.com/stephanenicolas/toothpick – Snicolas

3

Bạn cũng có thể muốn xem xét Spring ME. Mặc dù ban đầu được dự định cho Java ME, tôi cũng đã thấy các báo cáo từ những người sử dụng nó cho Android. Lợi ích sẽ là bạn có một mô hình lập trình quen thuộc (Spring) mà không bị phạt: Spring ME có dấu chân 0k.

+0

Mùa xuân ME phụ thuộc vào việc tạo mã. Bạn đã tìm thấy bất kỳ tài nguyên nào để tích hợp nó với quy trình xây dựng chưa. Ví dụ, nó không thể can thiệp vào khả năng của tôi để chạy như ... Android App từ trong nhật thực. Và quá trình xây dựng kiến ​​sẽ cần được sửa đổi để hỗ trợ nó. –

+0

Xin chào Mark, tôi không hoàn toàn chắc chắn những gì bạn đang nói. Chúng tôi đã sử dụng các phần mở rộng Spring IDE để hỗ trợ phát triển (hoàn thành, xác thực, v.v.). Tôi có thể thấy rằng nếu bạn đang sử dụng Ant, mọi thứ có thể phức tạp hơn một chút. Hãy cho tôi biết nếu bạn cần sự giúp đỡ. Chúng ta có thể nói về nó. (wilfred dot springer tại gmail dot com) –

+0

Cố gắng tìm nó ngay bây giờ để thử và tôi không nghĩ ra nhiều. Nó vẫn đang được phát triển tích cực? –

0

Ngoài ra còn có một dự án Spring mới cho Android: Tiny Spring. Nó giải quyết rất cơ bản về cấu hình XML nhưng không làm mọi thứ mà Spring làm.

+1

mùa xuân cho android không hỗ trợ ioc cho android, chỉ cần cung cấp hỗ trợ A Rest Client và Auth để truy cập các API an toàn. –

13

Thư viện tiêm phụ thuộc Android phù hợp nhất là Dagger by Square. Cả Spring và Guice đều được thiết kế cho các ứng dụng Java, chứ không phải Android. Nếu yêu cầu duy nhất của bạn là quản lý phụ thuộc đơn giản, Dagger là tùy chọn tốt nhất và có hỗ trợ JSR-330.

1

Nếu bạn đang sử dụng để sử dụng Spring trong các dự án khác, bạn sẽ không thể rất hài lòng với mùa xuân dành cho Android (nó chỉ là một thư viện với sự hỗ trợ Auth REST), Xuân ME (workflow hoàn toàn khác nhau và giảm featureset) hoặc Tiny Spring (ví dụ: chỉ Spring- như cấu hình).

Tuy nhiên, bạn có thể cung cấp cho dự án của tôi RoboSpring một lần thử. Từ mô tả:

RoboSpring là một cổng (thực) của Khung mùa xuân tới nền tảng Android. Ngoài ra nó cung cấp hỗ trợ sơ bộ cho các chức năng được giới thiệu bởi RoboGuice như tiêm View tham chiếu vào các hoạt động và nhiều hơn nữa. RoboSpring dựa trên phiên bản 3.1.0 RELEASE của lõi Spring, bean, context và aop components. Nó cung cấp các chức năng sau:

  • thành phần ứng dụng Cấu hình với một tập tin cấu hình Spring (XML)
  • Autowire linh kiện Android của bạn với đậu từ bối cảnh ứng dụng Spring.
  • Tiêm bối cảnh ứng dụng Android vào Đậu mùa xuân của bạn.
  • Tiêm chế độ xem vào Hoạt động.
  • ... và nhiều hơn nữa

https://github.com/dthommes/RoboSpring

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