2010-06-25 23 views
5

tôi đang theo hướng dẫn để setup a service to start on boot nơi những mảnh cuối cùng của mã này là:Tôi có cần thêm bộ lọc ý định khi bắt đầu dịch vụ không?

Hãy một mục dịch vụ này trong AndroidManifest.xml như

<service android:name="MyService"> 
<intent-filter> 
<action 
android:name="com.wissen.startatboot.MyService" /> 
</intent-filter> 
</service> 

Bây giờ bắt đầu dịch vụ này trong phương pháp onReceive các BroadcastReceiver MyStartupIntentReceiver của như

public void onReceive(Context context, Intent intent) { 
    Intent serviceIntent = new Intent(); 
    serviceIntent.setAction("com.wissen.startatboot.MyService"); 
    context.startService(serviceIntent); 

} 

Như bạn thấy nó sử dụng bộ lọc ý định và khi bắt đầu dịch vụ thêm hành động. Tôi có thể chỉ sử dụng

startService(new Intent(this, MyService.class)); 

Ưu điểm của cái nào so với loại kia?

Trả lời

7

Giả sử đây là tất cả trong một ứng dụng, bạn có thể sử dụng biểu mẫu sau (MyService.class).

Ưu điểm của cái nào so với loại kia?

Tôi muốn sử dụng chuỗi hành động tùy chỉnh nếu bạn muốn bên thứ ba bắt đầu dịch vụ này.

0

Như tôi đã đề cập trong comment, các hành động có thể hữu ích cho việc tự kiểm tra. Ví dụ: dịch vụ thực hiện rất nhiều tác vụ. Đối với mọi công việc, có một hành động. Nếu dịch vụ được bắt đầu bằng hành động không xác định, một số IllegalArgumentException sẽ bị ném.

Tôi thường sử dụng phương pháp này trong onStartCommand.

String action = intent.getAction(); 
if (action.equals(ACT_1)) { 
    // Do task #1 
} else if (action.equals(ACT_2)) { 
    // Do task #2 
} else { 
    throw IllegalArgumentException("Illegal action " + action); 
} 
Các vấn đề liên quan