Service Android4.0服务退出

Service Android4.0服务退出,service,android-4.0-ice-cream-sandwich,Service,Android 4.0 Ice Cream Sandwich,这是我启动服务的代码 public class MyStartupIntentReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Intent callService = new Intent(); callService.setAction("com.xxxx.yyyy.services.StartServiceActivity"); c

这是我启动服务的代码

public class MyStartupIntentReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
    Intent callService = new Intent();
    callService.setAction("com.xxxx.yyyy.services.StartServiceActivity");
    context.startService(callService);
}
} 
在清单文件中,我定义了如下广播接收器

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

问题是服务在android2.3.5 SDK设备上运行良好。但不适用于4.0设备。我的代码有问题吗。请帮我解决这个问题

我在网上找到一篇文章,希望它能帮助你:

广播回归确认

在之前的一篇文章中,我引用了一些证据,证明在用户使用你的应用程序之前,启动完成的广播在Android 3.1上不会开箱即用

它实际上比这个大一些

在我要求澄清的问题中,哈克伯恩女士表示:

从3.1开始,当安装应用程序时,它们处于“停止”状态,因此在用户明确启动它们之前,它们将无法运行。按“强制停止”将使其返回此状态

因此,当应用程序第一次安装时,系统会完全忽略它们,除非用户手动启动某些东西:很可能是单击启动程序活动或添加应用程序小部件

一直依赖于在没有用户干预的情况下获得某种系统广播的开发者将需要调整他们的Android 3.1应用程序

正如我在上一篇文章中所写:

我希望大多数应用程序都可以。例如,如果您的启动接收器用于建立AlarmManager时间表,那么您还需要在应用程序首次运行时建立该时间表,这样用户就不必重新启动手机来设置闹钟。这种模式不会改变——只是如果用户碰巧重新启动手机,它不会设置你的闹钟,直到用户运行你的一项活动

更新:为了澄清上面的引述,一旦用户第一次运行应用程序(并且没有强制停止),一切都会像以前一样-重新启动会导致接收到启动完成的广播,等等。但是,如果用户安装了该应用程序,除非他们手动运行该应用程序,否则不会收到广播。如果用户强制停止应用程序,除非他们手动运行应用程序,否则不会收到广播。 这一变化并不可怕,因为它限制了恶意软件在用户不知情的情况下运行的方式,从而使安全性又提高了一个档次。虽然它不能提供完美的安全性——恶意软件仍然可以安装自己的愤怒的小鸟发射器图标副本,并希望用户搞砸——但这是一个进步

<service android:name=".services.CallService">
    <intent-filter>
            <action               
          android:name="com.xxxx.yyyy.services.StartServiceActivity" />
    </intent-filter>

    </service>
serviceIntent = new Intent(SplashScreen.this, StartServiceActivity.class);
getApplicationContext().startService(serviceIntent);