Một câu hỏi đơn giản. Liệu điều đó có xảy ra mà tôi vẫn nhận được các máy thu phát đã đăng ký sau khi tôi đã dừng ứng dụng không?Tôi vẫn có thể nhận được ý định của người phát sóng phát sóng sau khi tôi buộc dừng ứng dụng của mình trên Android không?
Trả lời
nếu người nhận của bạn được đăng ký trong AndroidManifest thì có, ứng dụng của bạn sẽ vẫn nhận được. Mặt khác, nếu bạn đăng ký qua mã (trong dịch vụ/hoạt động), thì ứng dụng sẽ không nhận được mã số
Tôi có nhận được các bộ thu phát sóng đã đăng ký sau khi tôi dừng ứng dụng không?
Trên Android 3.1+, no. Khi người dùng đã buộc dừng ứng dụng của bạn, bạn sẽ không nhận được bất kỳ phát sóng nào Intents
, dưới mọi hình thức, cho đến khi người dùng bắt đầu thủ công một trong các hoạt động của bạn.
Bạn có biết liệu có cách giải quyết nào cho vấn đề này không? –
@MikeT: Để người dùng bắt đầu thủ công một trong các hoạt động của bạn * là * giải pháp thay thế ". – CommonsWare
Ok, tốt để biết! Nhưng tại sao? Để cung cấp cho người dùng quyền kiểm soát nhiều hơn đối với các ứng dụng? Ngoài ra, tôi tự hỏi: làm các ứng dụng taskmanager này cũng gọi đây là lực dừng khi giải phóng bộ nhớ?Hay họ sử dụng ít cách xâm nhập để giết một quá trình? – Peterdk
Bạn không nên thêm FLAG_INCLUDE_STOPPED_PACKAGES vào ý định của người nhận bắt đầu hoạt động hoặc dịch vụ của bạn. Bạn phải thêm nó vào mục đích mà bạn sử dụng cho sendBroadcast. Có nghĩa là, bạn cần phải thêm nó vào mục đích trong ứng dụng gọi Broadcast.
Đây là cách bạn nên kích hoạt máy thu của bạn từ một ứng dụng khác:
Intent intent = new Intent("com.xxx.my_filter_intent");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
this.sendBroadcast(intent);
Nếu bạn không có kiểm soát trên truyền hình này (ví dụ nếu nó là một phát sóng hệ thống) và không có lá cờ như vậy bên trong - sau đó ứng dụng của bạn sẽ không được kích hoạt bởi chương trình phát này nếu nó đang ở trạng thái dừng cưỡng bức.
đọc thêm ở đây: http://developer.android.com/about/versions/android-3.1.html#launchcontrols
sử dụng phương pháp của tôi nếu bạn muốn bắt đầu một ứng dụng ẩn cho thời gian chỉ đầu tiên tôi thực hiện một hoạt động Launcher minh bạch như thế này
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/Theme.Transparent"
android:excludeFromRecents="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Vì vậy, tôi làm ứng dụng ẩn trong trình khởi chạy bằng cách đặt mã này vào oncreat()
PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, MainActivity.class);
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Vì vậy, tôi sử dụng mã này cho biểu tượng chương trình ứng dụng trên launcher và làm cho nó chạy thể trên lớp dịch vụ có sử dụng khởi động quảng bá thu và kết nối mạng lớp broadcast receiver quá (autostart.java và networkConnectinCheck.java):
PackageManager p = context.getPackageManager();
ComponentName componentName = new ComponentName(context, MainActivity.class);
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Bây giờ tôi có thể chạy ứng dụng lần đầu tiên bằng tay người dùng và sau đó tôi sử dụng ứng dụng của người nhận vào ứng dụng ăn trưa bất cứ lúc nào.
- 1. Người phát sóng có thể nhận nhiều chương trình phát sóng không?
- 2. Lỗi khi nhận sự cố ý định phát sóng
- 3. Không thể nhận android.intent.action.EVENT_REMINDER phát sóng
- 4. Địa chỉ phát sóng Android
- 5. Cách giới hạn phát sóng tới ứng dụng Android của riêng mình
- 6. Cuộc gọi của Người nhận phát sóng hai lần
- 7. android.net.wifi.WIFI_STATE_CHANGED không được phát sóng
- 8. Máy chủ lưu trữ USB 3.1 của Android - Trình phát sóng không nhận được USB_DEVICE_ATTACHED
- 9. Phát sóng Camera Android Video
- 10. iOS có thể nhận các chương trình phát sóng như Android không?
- 11. Cách nhận điểm phát sóng wifi của tôi ssid trong hệ thống Android hiện tại của tôi
- 12. Nghe phát sóng Trước khi gỡ cài đặt ứng dụng
- 13. Thẻ NFC Android nhận được với bộ phát sóng
- 14. MEDIA_MOUNTED chương trình phát sóng không được nhận
- 15. Không thể nhận được mục đích phát sóng của UsbManager.ACTION_USB_DEVICE_ATTACHED/UsbManager.ACTION_USB_DEVICE_DETACHED
- 16. Không thể nhận chương trình phát sóng trong ICS
- 17. "Khởi động nhanh" của HTC không phát sóng ý định BOOT_COMPLETED cũng như không xóa ý định báo động
- 18. lỗi angularjs trên $$ phát sóng
- 19. widget cập nhật android từ bộ thu sóng phát sóng
- 20. BroadcastReceiver của tôi không nhận được ý định BOOT_COMPLETED sau khi khởi động N1 của tôi
- 21. Cách làm cho ứng dụng của tôi nhận được phát sóng khi các ứng dụng khác được cài đặt hoặc xóa
- 22. Phát sóng dính là gì?
- 23. Có thể viết bộ thu phát sóng Android phát hiện khi điện thoại thức dậy không?
- 24. Bắt đầu và dừng một thông báo từ bộ thu sóng phát sóng
- 25. Bộ phận thu phát và phát sóng
- 26. Giữ cho bộ thu phát sóng chạy sau khi ứng dụng được đóng
- 27. Gửi phát sóng UDP trên Windows 7
- 28. Quy tắc phát sóng mảng cố định
- 29. Nhận các gói phát sóng UDP trên Linux
- 30. phát sóng để có số lần khởi chạy ứng dụng
Điều này dường như không còn là trường hợp của 3.1. Xem câu trả lời của @ CommonsWare bên dưới. –
đó là câu trả lời ngu ngốc .. tại sao chấp nhận điều này .. –
@ZalaJanaksinh nó không phải là "ngu ngốc" thời gian nó được trả lời - chỉ khi bạn biết lịch sử android :) – waqaslam