2010-02-25 36 views

Trả lời

35

Ứng dụng có thể khởi động dịch vụ với sự trợ giúp của phương thức Context .startService. Phương thức này sẽ gọi phương thức onCreate của dịch vụ nếu dịch vụ chưa được tạo; phương thức onStart khác sẽ được gọi. Đây là mã:

Intent serviceIntent = new Intent(); 
serviceIntent.setAction("com.testApp.service.MY_SERVICE"); 
startService(serviceIntent); 
1

API Demos có một số ví dụ khởi chạy dịch vụ.

1

Sử dụng phương thức Context.startService().

Và đọc this.

44

Thêm này trong mã của bạn

Intent serviceIntent = new Intent(this, ServiceName.class); 
    startService(serviceIntent); 

Dont quên thêm thẻ dịch vụ trong AndroidManifest.xml nộp

<service android:name="com.example.ServiceName"></service> 

Từ Android official documentation:

Thận trọng: Một dịch vụ chạy trong cùng một quy trình như ứng dụng trong mà nó được khai báo và trong luồng chính của ứng dụng đó, theo mặc định . Vì vậy, nếu dịch vụ của bạn thực hiện các hoạt động chuyên sâu hoặc chặn trong khi người dùng tương tác với một hoạt động từ cùng một ứng dụng, dịch vụ sẽ làm chậm hiệu suất hoạt động. Để tránh ảnh hưởng đến hiệu suất ứng dụng , bạn nên bắt đầu một chuỗi mới bên trong dịch vụ .

+0

bạn có thể cho tôi biết cách bắt đầu mã chuỗi ervicein –

1

Dịch vụ tạo đầu tiên từ tệp android Manifest.xml (ví dụ từ tab ứng dụng) và đặt tên cho nó.
Trên hoạt động trên một số sự kiện như nhấp chuột hoặc liên lạc bao gồm mã từ dịch vụ:

public void onClick(View v) 
{ 
    startService(new Intent(getApplicationContext(),Servicename.class)); 
} 

Nếu bạn muốn dừng chạy hoặc bắt đầu dịch vụ sau đó bao gồm mã này:

public void onclick(View v) 
{ 
    stopService(new Intent(getApplicationContext,Servicename.class)); 
} 
0

Nếu bạn muốn bắt đầu một dịch vụ và nó sẽ chạy trong nền sử dụng START_STICKY trong dịch vụ tương ứng của bạn.

Bạn có thể bắt đầu servvice với khi khởi động cũng có,

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

Và tạo nhận,

<receiver android:name=".auth.NotificationBroadcast" android:enabled="true" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

Trong Brodcast Receiver thêm,

@Override 
    public void onReceive(Context context, Intent intent) { 

     System.out.println("BroadcastReceiverBroadcast--------------------ReceiverBroadcastReceiverBroadcastReceiver----------------BroadcastReceiver"); 

     if (intent != null) { 
      String action = intent.getAction(); 

     switch (action) { 
      case Intent.ACTION_BOOT_COMPLETED: 
       System.out.println("Called on REBOOT"); 
       // start a new service 
       startService(new Intent(getApplicationContext(),Servicename.class)); 

       break; 
      default: 
       break; 
     } 
    } 
} 

Và dịch vụ của bạn là như thế,

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