Service啟動方式
顯式啟動方式
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
隱式啟動方式
Intent intent = new Intent();
intent.setAction("com.update.reboot");
startActivity(intent);
//AndroidMainfest.xml
<service android:name=".service.UpdateRebootService">
<intent-filter>
<action android:name="com.update.reboot"/>
</intent-filter>
</service>
這是Service隱式和顯式啟動的代碼范例。不同應(yīng)用之前只能用隱式啟動,同一個應(yīng)用兩種方式都可以彬檀。
- 注意啦!注意啦瞬女!
在Android5.0以上窍帝,Service的調(diào)用必須用顯式調(diào)用,否則會報錯诽偷。不過Android5.0 以上的顯式調(diào)用除了坤学,上述的顯示啟動方式之外,對于不同包之前或者不同應(yīng)用之間报慕,要啟動Service深浮,則用下面這種啟動方式:
Android 5.0以上另一種顯式啟動方式(適用于不同應(yīng)用之間)
Intent intent = new Intent();
intent.setAction("com.update.reboot");
intent.setPackage("packagename");//注意是對應(yīng)的應(yīng)用包名
startActivity(intent);
//AndroidMainfest.xml
<service android:name=".service.UpdateRebootService">
<intent-filter>
<action android:name="com.update.reboot"/>
</intent-filter>
</service>
其實和隱式啟動相比,只是多了一句指定包名了而已眠冈,不過也恰恰正因為指定了包名飞苇,所以被稱之為顯式啟動.