2012-10-29 81 views
0

我是新來的android.Is服務在Android是自動啓動當移動開關??如果是的,這是偉大的。如果沒有任何人可以解釋我該如何啓動特定的服務?服務是自動啓動的

+1

你應該閱讀:http://developer.android.com/guide/components/services .html – Phil

回答

2

後設備沒有啓動,服務不會自動開始添加下面的代碼。但你可以開始服務註冊一個android.intent.action.BOOT_COMPLETED當設備啓動完成如:

的AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"> 
    </uses-permission> 
    <receiver android:name=".BootReceiver" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </receiver> 


BootReceiver.java:

public class BootReceiver extends IntentReceiver 
{ 

    static final String ACTION = "android.intent.action.BOOT_COMPLETED"; 

    public void onReceiveIntent(Context context, Intent intent) 
    { 
     if (intent.getAction().equals(ACTION)) 
     { 
      context.startService(new Intent(context,YourService.class)); 
     } 
    } 
} 
+0

快6秒吧。 :) –

1

在基於用戶的應用程序服務沒有啓動自動

你需要

<receiver android:name="com.wallpaper.StartReceiver" xmlns:android="#unknown"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
</receiver> 
+0

請你可以詳細解釋.. – user1716119

0

你可以開始你的服務startService(intent)

要在清單文件

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

在手機重啓運行

添加下列權限並申報了Broadcast Receiver

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

    </intent-filter> 
</receiver> 

然後

public class BootReceiver extends BroadcastReceiver { 
private static final String TAG="BootReceiver"; 

@Override public void onReceive(Context context,Intent intent){ 
    try{ 
     context.startService(new Intent(context,yourServiceName.class)); 
     Log.i(TAG,"Starting Service yourServiceName"); 
    }catch(Exception e){ 
     Log.e(TAG,e.toString()); 
    } 
} 
} 
1

你最好從這裏 http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html

廣播接收器是一個Android組件,它允許爲系統或應用程序事件一旦Android的負載可達註冊(你的情況ACTION_BOOT_COMPLETED)

閱讀廣播接收器的東西它會播放一條消息,說明啓動已完成,並且所有註冊爲接收該事件的應用程序都將收到該消息,並且您可以執行自己的操作...

可以使用以下代碼將其添加到清單文件

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

這裏有一些鏈接,它 http://www.grokkingandroid.com/android-tutorial-broadcastreceiver/

0

它取決於你的要求,你想要什麼樣的服務開始,當你想啓動該服務。如果您想在啓動時啓動特定服務,則必須按照Devangi Desai提到的方式註冊接收者,然後您需要發出startService()方法。

public class Receiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      String intentAction = intent.getAction(); 
      if (intentAction.equals(Intent.ACTION_BOOT_COMPLETED)) 
       context.startService(new Intent(context, 
         ConnectionService.class)); 
     } 
    } 

這裏ConnectionService.class是擴展服務和實現服務的類。

0

它們不會自動啓動,除非您在清單中明確定義它們應該在啓動時啓動。爲此,您需要在您的清單文件中添加動作

<action android:name="android.intent.action.BOOT_COMPLETED" /> 

您的服務的清單文件中。

例如:

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

      <category android:name="android.intent.category.HOME" /> 
     </intent-filter> 
    </receiver> 
</receiver> 

請閱讀更詳細的信息,關於服務這個官方指南: https://developer.android.com/guide/components/services.html