1.自啓動android
須要獲取自啓動權限:微信
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
這個權限在4.0之後必須須要。不然沒法獲取到廣播。app
而後咱們在廣播中獲取這個通知,而後進行相應的操做:ide
1 package com.example.com.mac.bootdeme; 2 3 import android.app.Service; 4 import android.content.Intent; 5 import android.os.IBinder; 6 import android.util.Log; 7 8 public class BootService extends Service { 9 String Tag = "BootService"; 10 11 @Override 12 public void onCreate() { 13 // TODO Auto-generated method stub 14 Log.i(Tag, "onCreate"); 15 super.onCreate(); 16 } 17 18 @Override 19 public int onStartCommand(Intent intent, int flags, int startId) { 20 // TODO Auto-generated method stub 21 Log.i(Tag, "onStartCommand"); 22 new Thread(new Runnable() { 23 24 @Override 25 public void run() { 26 // TODO Auto-generated method stub 27 while (true) { 28 Log.i(Tag, "執行Service Action"); 29 try { 30 Thread.sleep(1000); 31 } catch (InterruptedException e) { 32 // TODO Auto-generated catch block 33 e.printStackTrace(); 34 } 35 } 36 } 37 }).start(); 38 return START_STICKY; 39 } 40 41 @Override 42 public IBinder onBind(Intent intent) { 43 // TODO Auto-generated method stub 44 Log.i(Tag, "onBind"); 45 return null; 46 } 47 48 @Override 49 public void onDestroy() { 50 // TODO Auto-generated method stub 51 Log.i(Tag, "onDestroy"); 52 super.onDestroy(); 53 } 54 }
下面我來談談這個自啓動出現的問題:spa
a).手機差別,好比:個人小米手機沒法獲取到通知,須要在權限控制中進行設置。code
可是不知道爲何微信和QQ在安裝上之後默認會有自啓動權限,我懷疑是跟各廠商進行合做開放了自啓動接口。小米v5默認是在啓動後不會給app接收到廣播的。這個若是有哪位高手知道的請告訴我。對象
b).關於Service一直保存blog
<service android:name="com.example.com.mac.bootdeme.BootService" android:process="com.example.com.mac.bootdeme.BootService" > </service>
默認狀況下android中全部的組件都隨包名走,因此只會在Setting中出現一個進程一個服務。若是想讓某一個組件單出來,那麼android:process 配置成和包名不同的,就會是另外一個進程,那麼就會出現相似微信和支付寶這樣的現象。接口