2011-12-22 44 views
5

Tôi muốn tự động khởi động lại Dịch vụ của mình nếu ứng dụng gặp sự cố. ý tưởng của tôi là:Tự động khởi động lại Dịch vụ khi gói ứng dụng gặp sự cố

1: một BroadcastReceiver khi tai nạn apk và tự động khởi động dịch vụ

if("android.intent.action.SOMETHING".equals(intent.getAction())) 
    { 
    Intent serviceLauncher = new Intent(context, Service.class); 
    context.startService(serviceLauncher); 
    } 

2: với một uncaughtException(), nhưng tôi không biết để xử lý mà

Trả lời

5

Tôi nghĩ rằng bạn chỉ cần trở START_STICKY trong onStartCommand() Dịch vụ

+0

tôi sẽ thử điều này nhanh nhất có thể và cung cấp cho bạn báo cáo –

+0

tôi chỉ đọc mô tả trên http://developer.android.com/reference/android/app/Service.html#START_STICKY và tôi nghĩ đây là những gì tôi cần, cảm ơn bạn –

+0

tôi nghĩ rằng START_STICKY chỉ đảm bảo rằng dịch vụ bắt đầu nhưng khi dịch vụ đang chạy, nó sẽ không khởi động lại sau khi bị hỏng, có thể không? –

0

Đỗ bạn muốn dịch vụ của bạn thực sự khởi động lại hoặc bạn muốn dịch vụ của mình tiếp tục? Tôi nghĩ dịch vụ không bị dừng lại khi ứng dụng bị hỏng, một Dịch vụ sẽ tách biệt với ứng dụng tạo ra nó.

+0

hmm có lẽ mô tả của tôi là một chút sai, tôi muốn khởi động lại dịch vụ khi nó đi xuống. –

+0

Tôi nghĩ rằng giải pháp duy nhất là cô lập nơi ứng dụng của bạn có thể gặp sự cố (sự cố của một ứng dụng không gây ra một hành động) và sử dụng try-catch. – VinceFR

0

Bạn có thể sử dụng setUncaughtExceptionHandler

Khi nhận trường hợp bạn có thể bắt đầu dịch vụ một lần nữa,

Một lựa chọn khác, có thể làm việc (Bạn cần phải thử nó), đang kêu gọi StartService vào phương pháp OnDestroy.

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