2012-05-07 34 views
8

Có một vấn đề - hoạt động chính của tôi bắt đầu dịch vụ và đóng cửa sau đó. Khi ứng dụng bắt đầu lần sau, ứng dụng sẽ nhận được tham chiếu đến dịch vụ này và dừng nó lại. Nhưng tôi không biết làm thế nào tôi có thể có được một tham chiếu đến một dịch vụ đang chạy. Xin vui lòng, tôi hy vọng bạn có thể giúp tôi. Cảm ơn bạn.Làm cách nào để tham khảo dịch vụ đang chạy?

Trả lời

0
private boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if ("your.service.classname".equals(service.service.getClassName())) { 
      return false; 
     } 
    } 
    return true; 
} 

if(isMyServiceRunning()) { 
    stopService(new Intent(ServiceTest.this,MailService.class)); 
} 
+0

nhưng làm thế nào tôi có thể ngừng dịch vụ bằng ví dụ của bạn? – user1166635

+0

@ user1166635 rất đơn giản, hãy xem bản chỉnh sửa của tôi. –

+3

Uhm .. đó là khá thừa. Chỉ cần gọi 'stopService' cho dù' Service' của bạn đang chạy hay không - không có hại gì nếu nó không phải là 'stopService' sẽ trả về' false'. – Jens

11

Câu trả lời này được dựa trên answer by @DawidSajdak. Mã của anh ta hầu như chính xác, nhưng anh ta đã chuyển các câu lệnh return, vì vậy nó đưa ra kết quả ngược lại. Mã đúng phải là:

private boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if ("your.service.classname".equals(service.service.getClassName())) { 
      return true; // Package name matches, our service is running 
     } 
    } 
    return false; // No matching package name found => Our service is not running 
} 

if(isMyServiceRunning()) { 
    stopService(new Intent(ServiceTest.this,MailService.class)); 
} 
Các vấn đề liên quan