无法“重新绑定”到同一服务

时间:2018-09-28 23:00:20

标签: java android android-activity service bindservice

我正在构建计时器应用程序。计时器在服务上运行并更新ui。 该应用程序在onCreate()中启动服务。

getApplication().startService(intentService);
getApplication().bindService(intentService, serviceConnection, Context.BIND_AUTO_CREATE);

有效。除非不是。专门针对配置更改。

我知道调用活动被破坏(onDestroy)然后重新创建,onCreate被再次调用,并且... bindService()应该绑定到同一服务。我用相同的Intent,来自相同(应用程序)上下文的相同serviceConnection来调用它。

不是。它以某种方式绑定到新的服务对象。 (我可以在调试器中看到它,返回到活动的对象是不同的)。那打破了我的计时器。

对我来说很有趣,当我退出活动并通过Notification(它是一个前台服务,并且通知将您带到同一活动)重新进入活动时,onCreate()也被再次调用,startService和bindService也是如此,但是时间,它可以以某种方式正确绑定到正在运行的服务。

我想念什么?

编辑:以下是服务代码的主要部分:

public class MyService extends IntentService {
    // variables ...
    public MyService() { super("MyService"); }
    protected void onHandleIntent(@Nullable Intent intent) {
         if (!hasStarted) {
              initializeTimer();
              startTimer();
         }
    }

    public IBinder onBind(Intent intent) {
         return new RecordBinder(this);
    }

    public void onDestroy() {
          super.onDestroy();
          if (timer != null)
              timer = null;
    }
    // there are also a bunch of private methods and stuff...
}

0 个答案:

没有答案