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隱式和顯式啟動的代碼范例。不同應用之前只能用隱式啟動,同一個應用兩種方式都可以。
- 注意啦!注意啦!
在Android5.0以上,Service的調用必須用顯式調用,否則會報錯。不過Android5.0 以上的顯式調用除了,上述的顯示啟動方式之外,對于不同包之前或者不同應用之間,要啟動Service,則用下面這種啟動方式:
Android 5.0以上另一種顯式啟動方式(適用于不同應用之間)
Intent intent = new Intent();
intent.setAction("com.update.reboot");
intent.setPackage("packagename");//注意是對應的應用包名
startActivity(intent);
//AndroidMainfest.xml
<service android:name=".service.UpdateRebootService">
<intent-filter>
<action android:name="com.update.reboot"/>
</intent-filter>
</service>
其實和隱式啟動相比,只是多了一句指定包名了而已,不過也恰恰正因為指定了包名,所以被稱之為顯式啟動.