如何重新绑定到正在运行的服务?

时间:2019-01-05 16:05:54

标签: android service android-binder

我的服务是一个3小时的计时器,应该在后台运行,直到时间结束(即使用户退出了应用程序也是如此)。

我已经成功创建了我的服务并将其与片段绑定在一起。 这使我可以向用户实时显示计时器。

退出应用程序后,服务会继续正常运行,甚至在计时器完成后(即使应用程序未打开)甚至会向用户发送通知

我的问题是这样的: 当用户关闭应用程序然后在计时器结束之前重新打开它时,我无法检索到该运行服务的引用...

这是我创建和绑定服务的代码

private ServiceConnection connection = new ServiceConnection(){
    @Override
    public void onServiceConnected(ComponentName componentName, IBinder 
                                   binder){
        TimerService.TimerBinder binderTime
         = (TimerService.TimerBinder) binder;
        Funx.getInstance().setTimerService(binderTime.getOgBinder());
        bound = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName componentName){
        bound = false;
    }
};

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    Intent intent = new Intent(getContext(), TimerService.class);
    Objects.requireNonNull(getContext()).bindService(intent, connection, 
    Context.BIND_AUTO_CREATE);
}

 @Override
    public void onDestroy(){
    super.onDestroy();
    if (bound){
        Objects.requireNonNull(getActivity()).unbindService(connection);
        bound = false;
    }
 }

0 个答案:

没有答案