Làm cách nào tôi có thể quản lý tốt nhất Chuỗi bộ lọc Android Intent trên nhiều dự án?


8

Trong dự án IntentExamples của tôi, tôi có bộ lọc này, tương ứng với một dịch vụ.

<intent-filter>
                <action android:name="biz.rpcodes.apps.intentexamples.START_SERVICE" />
</intent-filter>

Trong một dự án khác, UseExampleService, tôi có một cái gì đó như:

Intent i = new Intent("biz.rpcodes.apps.intentexamples.START_SERVICE");
                startService(i);

... được hướng dẫn bởi câu trả lời này: https://stackoverflow.com/a/16439551/5181778

Câu hỏi của tôi là: Làm cách nào tôi có thể quản lý tốt nhất các chuỗi bộ lọc Intent này trên nhiều dự án? Giải pháp tốt nhất tôi có bây giờ là tạo một lớp mà tôi đang sao chép và dán từ dự án Dịch vụ vào các dự án khác, tức là:

class ExampleServiceIntents {
public static final String ExampleServiceIntents.START_SERVICE = 
    "biz.rpcodes.apps.intentexamples.START_SERVICE";
...

Trong khi tôi có thể tự nhập các lớp Dịch vụ new Intent(this, ExampleService.class), tôi muốn giữ các lớp Dịch vụ trong dự án riêng của chúng.


Tại sao bạn muốn giữ dịch vụ trong một dự án riêng biệt? Điều đó chỉ giới thiệu khả năng ứng dụng Servicekhông được cài đặt. Và bạn luôn có thể tạo một thư viện chứa các hằng số này và sau đó sử dụng thư viện đó trong mỗi dự án.
Xaver Kapeller

Tôi hiện có thư viện và tôi thấy nó cồng kềnh trong Android Studio để nhập chúng. Thông thường Android Studio sẽ phá vỡ một cái gì đó và tôi còn lại sao chép từng tệp một. (Mặc dù câu hỏi / vấn đề riêng biệt) Ngoài ra, các Ứng dụng này nằm trong nhà, tôi có thể kiểm soát các yêu cầu, điều này không dành cho Google Play Store, v.v. Plus không cần cả ba ứng dụng chạy cùng một mã, theo cách nào đó tốt hơn là đặt yêu cầu trong hàng đợi trên một quy trình cho thiết kế của chúng tôi. (Rất nhiều để giải thích)
Rick Trang

Làm thế nào là nó cồng kềnh để nhập khẩu chúng? Bạn sẽ phá vỡ nhiều hơn nữa bằng cách sao chép các lớp một mình sau đó chỉ sao chép các mô-đun làm việc đầy đủ. Và tại sao bạn không sử dụng máy chủ maven như SonarQube hoặc Artifactory để lưu trữ thư viện nội bộ của bạn? Sau đó, nhập thư viện sẽ giống như nhập bất kỳ dự án maven nào khác - thêm một dòng trong build.gradle.
Xaver Kapeller

"phá vỡ nhiều hơn" Có, hoàn toàn. Nhưng cách duy nhất tôi có thể hình dung để sử dụng các mô-đun là nhập chúng, trong trường hợp đó, Android Studio sao chép tất cả các tệp. "... maven server" Cảm ơn bạn đã gợi ý, tôi sẽ xem xét điều này.
Rick Trang

Câu trả lời:


1

Thư viện chia sẻ Android hoặc các liên kết tượng trưng phụ thuộc hệ điều hành.

Tùy chọn 1: Thư viện Android được chia sẻ

Một thư viện Android chính thức được nhập vào từng dự án.

Ưu điểm : Loại an toàn. Đa nền tảng và hoạt động với kiểm soát nguồn. Kiểm tra cú pháp đầy đủ và hỗ trợ biên tập.

Nhược điểm : Vẫn hơi khó chịu khi nhập các dự án dưới dạng thư viện thông qua các trình soạn thảo hiện tại (Android Studio hoặc Eclipse với ADT) vì chúng không cung cấp giao diện rất tốt để thực hiện việc này. Nếu bạn phải thực hiện nhiệm vụ này thường xuyên nhưng không thường xuyên, bạn nhớ tất cả các bước mỗi lần, thì điều này có thể không đáng để nỗ lực. Nhưng nếu đó là một hoặc hai lần bắt đầu, thì bạn không phải làm lại, nó không quá tệ.

Tùy chọn 2 Liên kết tượng trưng

Tượng trưng liên kết một tệp nguồn chung trong mỗi dự án. Sau đó, cả hai dự án sẽ thấy tệp và thay đổi tệp, vì vậy chúng có thể được đồng bộ hóa.

Ưu điểm : Đơn giản hơn nhiều để thực hiện.

Nhược điểm : Liên kết tượng trưng không hoạt động tốt với các công cụ kiểm soát nguồn. Không phải đa nền tảng (để phát triển) vì các liên kết tượng trưng rất khác nhau từ hệ điều hành này sang hệ điều hành khác. Không thực sự rõ ràng đối với một nhà phát triển mới đến dự án mà các thay đổi trong một tự động được chia sẻ với nhau.


Do đó, vì tùy chọn liên kết tượng trưng có nhiều nhược điểm hơn nên tôi thường đề xuất giải pháp thư viện dùng chung cho hầu hết các dự án. Nhưng, nếu dự án cụ thể của bạn không cần các tính năng từ cột khuyết điểm của liên kết tượng trưng, ​​thì điều đó có lẽ dễ dàng hơn. Nó phụ thuộc.

Tái bút: Có một tùy chọn thứ ba khủng khiếp là có ứng dụng Android đầy đủ thứ ba cung cấp Nhà cung cấp dữ liệu Android cung cấp các giá trị chuỗi. Nhưng tại thời điểm đó, bạn cần liên lạc với ứng dụng đó bằng các chuỗi đặc biệt cũng cần chia sẻ, vì vậy bạn chỉ thêm một bước trừu tượng nhưng chưa giải quyết được vấn đề.


Ý tưởng thú vị về Nhà cung cấp. Nhưng, một bước lùi, tôi đồng ý. Cảm ơn bạn đã nhận ra rằng các biên tập viên hiện tại "không cung cấp giao diện rất tốt để làm" thư viện chia sẻ Android và cho những ưu và nhược điểm.
Rick Trang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.