2011-11-08 32 views
5

Tôi có một Dịch vụ bắt đầu chuỗi trong onCreate(). Chủ đề là phần cứng giám sát (IOIO) và sẽ kết thúc sau khi nó bị ngắt kết nối, vì vậy essesentially là một vòng lặp vô hạn. Dừng dịch vụ từ một Hoạt động hoạt động tốt và luồng cũng dừng (kết thúc bằng onDestory()).Dừng một Dịch vụ Android từ trong một chủ đề

Vấn đề của tôi là nếu chuỗi chết (nói vì ngoại lệ) có thể dừng dịch vụ đã sinh ra nó.

Tôi đã thử sử dụng stopSelf() từ bên trong mã chuỗi nhưng dịch vụ không dừng lại.

Cảm ơn bạn ps bài đăng đầu tiên của tôi vì vậy hãy tha thứ cho bất kỳ quy ước còn thiếu nào mà tôi nên tuân theo.

Trả lời

3

Tôi nghĩ điều bạn muốn ở đây có thể là sử dụng Handler. Eseentially, tạo một handler cho Sevrice của bạn (hãy chắc chắn nó là final để bạn có thể sử dụng trên tất cả các luồng). Sau đó, trong chủ đề khác của bạn, hãy gọi:

myServiceHandler.post(new Runnable(){ 
    public void run(){ 
    stopSelf(); 
    } 
} 
+0

Awesome, vì thế nó làm việc? –

+0

Chỉ cần những gì cần thiết – user1035795

+0

Tôi có cùng một vấn đề và tôi đã thử giải pháp này. Tuy nhiên, tôi có thể thấy rằng stopSelf() được thực thi từ chuỗi msin ... nhưng không có gì xảy ra. Và sau đó dịch vụ vẫn đáp ứng với ý định. Bất kỳ đầu mối? –

0

Làm thế nào để lưu trữ mục đích của dịch vụ và dừng trực tiếp dịch vụ? Trong dịch vụ:

private Intent thisIntent; 

public int onStartCommand (Intent intent, int flags, int startId) { 

    thisIntent = intent; 

Trong thread bên trong dịch vụ:

stopService(thisIntent); 
Các vấn đề liên quan