2012-06-23 12 views
5

Tôi cần phải luôn có dịch vụ nền sẽ đồng bộ hóa ứng dụng Android của tôi và máy chủ. Tôi biết làm thế nào để khởi động nó thông qua ứng dụng của tôi, nhưng khi Android tắt, sau đó dịch vụ nền sẽ chết.Bắt đầu dịch vụ nền khi Android bật

Tôi làm cách nào để giữ cho dịch vụ nền luôn chạy? (Ngay cả khi thiết bị tắt và sau đó bật ...)

Tôi cần phải thêm vào các chương trình bắt đầu của dịch vụ nền của tôi trên Android. Bất kỳ gợi ý nào?

Trả lời

15

sử dụng <action android:name="android.intent.action.BOOT_COMPLETED" /> để khởi động dịch vụ của bạn khi thiết bị bật.

Trong AndroidManifest.xml:

<receiver android:name=".BootBroadcastReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

Add phép trong bạn AndroidManifest.xml như:

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

Trong mã phần BootBroadcastReceiver:

public class BootBroadcastReceiver extends BroadcastReceiver {  
    static final String ACTION = "android.intent.action.BOOT_COMPLETED"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // BOOT_COMPLETED” start Service  
     if (intent.getAction().equals(ACTION)) { 
      //Service  
      Intent serviceIntent = new Intent(context, StartOnBootService.class);  
      context.startService(serviceIntent); 
     } 
    }  
} 

EDIT: nếu bạn đang nói về thiết bị màn hình bật/tắt sau đó bạn cần phải đăng ký <action android:name="android.intent.action.USER_PRESENT" /><action android:name="android.intent.action.SCREEN_ON" /> để bắt đầu dịch vụ của bạn khi người dùng có mặt hoặc màn hình đang bật.

+0

Tôi gặp lỗi khi bật thiết bị di động ... "Ứng dụng bị buộc phải ...". Nó không làm việc. – Frion3L

+0

lỗi nào bạn đang nhận được có thể chỉnh sửa bài đăng của mình có lỗi không? –

3
(Even when the device turns off and then turns on.. 

Phát sóng hệ điều hành ACTION_BOOT_COMPLETED khi khởi động xong. Ứng dụng của bạn có thể yêu cầu để nhận được thông báo này bằng cách yêu cầu sự cho phép trong biểu hiện của bạn:

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

http://blog.gregfiumara.com/archives/82

http://www.androidcompetencycenter.com/2009/06/start-service-at-boot/