今天在写一个UDP服务,启动service的时候看到logcat打印出了一个warning,Implicit intents with startService are not safe。于是看了一下代码,发现没有什么不妥,遂百度之,据说在5.0以上SDK编译的时候,如果使用隐式启动service,系统会抛这个警告出来,源码如下:
private void validateServiceIntent(Intent service) {
02. if (service.getComponent() == null && service.getPackage() == null) {
03. if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
04. IllegalArgumentException ex = new IllegalArgumentException(
05. "Service Intent must be explicit: " + service);
06. throw ex;
07. } else {
08. Log.w(TAG, "Implicit intents with startService are not safe: " + service
09. + " " + Debug.getCallers(2, 3));
10. }
11. }
12. }
所以推荐改为使用显示启动的方式启动service。
http://developer.android.com/google/play/billing/billing_integrate.html#billing-service