6

Tôi đang cố gắng tạo một tiện ích đơn giản bằng nút bắt đầu Service với OnClickPendingIntent(). Tôi có thể bắt đầu nó tốt nhưng tôi không thể tìm ra một cách để ngăn chặn nó (tôi biết tôi có thể làm điều đó với một BroadcastReceiver hoặc một cái gì đó tương tự nhưng tôi muốn tránh hardcode).Đang chờ xử lý để khởi chạy và dừng Dịch vụ

Đây là mã của tôi:

 Intent intent = new Intent(context, myService.class); 
     PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); 

     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget); 

     if (!ismyserviceup(context)) { 
      views.setOnClickPendingIntent(R.id.my_button, pendingIntent); 
     } else { 
      // i need to stop it!!!! 
     } 

Trả lời

17

Có nhiều cách để làm điều này, sau đây là một:

Intent intent = new Intent(context, myService.class); 

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget); 

    if (ismyserviceup(context)) { 
     intent.setAction("STOP"); 
    } 
    PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);     
    views.setOnClickPendingIntent(R.id.my_button, pendingIntent); 

Sau đó, trên các dịch vụ của onStartCommand(), bạn có thể kiểm tra hành động ý định cho "STOP" (có thể bạn nên sử dụng chuỗi tốt hơn) và gọi stopSelf().

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