每次运行Start Service时都会调用onCreate()

时间:2014-05-09 19:43:19

标签: android android-service

我有一个接收屏幕活动的课程,每当屏幕解锁时都会运行以下行。

Intent intent = new Intent(context, myService.class);
context.startService(intent);

我的问题是每次屏幕解锁时都会运行我的服务onCreate()。这导致myService的多个副本在我只需要一个时运行。我尝试了各种解决方案,但无济于事。我的理解是,如果服务正在运行,那么onCreate()将被传递并直接进入onStartCommand()。

在执行此代码之前,我已经提取了一系列正在运行的服务,并且从未列出myService。

不确定我在这里做错了什么......

2 个答案:

答案 0 :(得分:0)

我曾经遇到过同样的问题。 最后,我发现这是因为我每次调用onStartCommand()时都使用了stopSelf(msg.arg1)。我通过简单地删除stopSelf()来解决问题。希望它有所帮助。

答案 1 :(得分:-1)

要防止每次启动服务时都要调用oncreate,请从START_STICKY返回onStartCommand。这将保持服务,直到你杀死它。

@Override
    public void onCreate() {
        // get the notification manager
        mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
            // other stuff etc.
        context = this.getApplicationContext();
    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // the service is started so after all clients are unbound it stays
        // running
        return Service.START_STICKY;
    }

祝你好运