tôi sẽ đồng ý rằng không có nhiều người sẽ tìm thấy android: quá trình có ích như một thuộc tính của thẻ ứng dụng. Tuy nhiên, tôi nhận thấy nó hữu ích như một thuộc tính của thẻ hoạt động .
Mục đích của android:process
trên một hoạt động là xác định rằng hoạt động của bạn sẽ được khởi chạy trong quá trình có tên cụ thể. Sự lựa chọn tên đó có thể được sử dụng để cô lập hoạt động trong quá trình riêng của nó (khác với cái đã khởi chạy nó), hoặc buộc nó phải sống trong một quá trình duy nhất với các hoạt động khác có cùng tên.
mỗi Guide Dev (http://developer.android.com/guide/topics/manifest/activity-element.html):
"Nếu tên được gán cho thuộc tính này bắt đầu với một dấu hai chấm (':'), một quá trình mới, tư nhân để ứng dụng, được tạo ra khi nó cần thiết và Nếu tên quá trình bắt đầu bằng một ký tự chữ thường, hoạt động sẽ chạy trong một tiến trình toàn cục của tên đó, với điều kiện là nó có quyền làm như vậy. sử dụng." Gần đây tôi đã tìm thấy thuộc tính này hữu ích trong việc giải quyết vấn đề tôi đã đưa ra hoạt động trợ giúp cho ứng dụng, trong một số trường hợp, khá gần với giới hạn 16MB vẫn áp dụng cho một số thiết bị. Khởi động hoạt động trợ giúp của nó là, trong những tình huống đó, đẩy ứng dụng của tôi vượt quá giới hạn, dẫn đến một lực lượng gần gũi.
Bằng cách sử dụng thẻ android:process
, tôi có thể chỉ định rằng hoạt động trợ giúp của mình sẽ được khởi chạy trong một quy trình riêng của riêng nó. Quá trình này đã có 16MB của riêng mình, và nó không được tính vào đống ứng dụng chính của tôi đã khởi chạy nó. Điều này ngăn chặn vĩnh viễn và hoàn toàn ứng dụng của tôi khỏi không gian heap và bị lỗi khi trợ giúp được khởi chạy.
Nếu ứng dụng ra mắt của bạn có tên gói
com.mycompany.mymainapp
và do đó được gán một tên quá trình đó là cùng một chuỗi, sau đó, nếu bạn sử dụng
android:process=":myhelp"
về hoạt động giới thiệu của bạn, nó sẽ được chỉ định tên quá trình
com.mycompany.mymainapp:myhelp
và quy trình đó sẽ có riêng, separa te process ID, mà bạn có thể xem (ví dụ trong DDMS).
Điều đó, ít nhất, là trải nghiệm của tôi. Thử nghiệm của tôi cho đến nay đã được thực hiện trên một chiếc Moto Droid cũ chạy CM6 (Android 2.2.1), được định cấu hình để có giới hạn 16MB.
Trong trường hợp của tôi, vì tôi không muốn người dùng cảm nhận được sự giúp đỡ như là tách biệt với ứng dụng của tôi, tôi bao gồm các thuộc tính
android:excludeFromRecents="true"
để ngăn chặn các hoạt động giúp đỡ từ xuất hiện trên các ứng dụng gần đây (dài -press Home) danh sách. Tôi cũng bao gồm
android:taskAffinity="com.mycompany.mymainapp.HelpActivity"
nơi HelpActivity là tên của các hoạt động giúp đỡ, để phân biệt hoạt động trong nhiệm vụ riêng của mình
Tôi cũng nói thêm:
android:launchMode="singleInstance"
để ngăn chặn nhiều trường hợp của ứng dụng này được tạo mỗi lần người dùng gọi trợ giúp.
Tôi cũng đã thêm lá cờ:
Intent.FLAG_ACTIVITY_NEW_TASK
để tiếp cận mục đích sử dụng để khởi động các hoạt động giúp đỡ.
Các thông số này có thể hoặc không cần thiết, tùy thuộc vào việc sử dụng bạn đang tạo thuộc tính android:process
.
Xem xét tần suất gặp giới hạn bộ nhớ khi phát triển cho thiết bị Android, trong một số trường hợp, có thể cho phép bạn chia nhỏ các phần của ứng dụng thành các quy trình riêng biệt. quà tặng. Có thể có những mối nguy hiểm tiềm ẩn trong việc thực hiện điều này mà tôi chưa xem xét hoặc có kinh nghiệm, nhưng cho đến nay, rất tốt, trong trường hợp cụ thể của tôi.
có vẻ như bạn có gói phụ trong tên nhà cung cấp "com.com" – CrackerJack9