返回上一页时,Android应用程序中的服务连接泄漏
Posted
技术标签:
【中文标题】返回上一页时,Android应用程序中的服务连接泄漏【英文标题】:Service Connection Leak in android app when back to a previous page 【发布时间】:2018-01-31 23:46:00 【问题描述】:您好,我正在开发一个打卡进出考勤应用程序,它有一个定时器服务,当用户打卡时运行。我遇到的问题是当我启动该服务,然后按手机上的返回按钮返回到上一页我得到一个服务连接泄漏,我不知道如何解决这个问题,因为它似乎停止了服务。
//onStart - 在服务类中启动定时器
public int onStartCommand(Intent intent, int flags, int startId)
manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
displayNotification("Clock in timer started");
clockTask = new TimerTask()
public void run()
seconds++;
;
startCounter();
return START_STICKY;
//onDestroy to stop the service and counter
public void onDestroy()
super.onDestroy();
long mins = seconds/60;
seconds%=60;
long hours = mins/60;
mins%=60;
stopCounter();
// manager.cancel(R.string.notification);
displayNotification("Clocked out after : "+""+hours+":"+mins+":"+String.format("%02d",seconds));
//seconds = 0L;
//我如何在我的活动类中绑定意图
Intent i = new Intent(this, StartTimerService.class);
bindService(i, seamysConnection, Context.BIND_AUTO_CREATE);
enter image description here
任何帮助将不胜感激
【问题讨论】:
【参考方案1】:当 android 操作系统销毁 Activity
并发现 A ServiceConnection
仍绑定到正在运行的 Service
时会发生这种情况,因此您需要在销毁您的 Activity
之前 Unbind
服务(返回上一页
)
解除绑定服务器
unbindService(seamysConnection);
注意:
您应该使用相同的context
来绑定服务和取消绑定服务。如果您将服务与getApplicationContext()
绑定,那么您还应该使用getApplicationContext.unbindService(..)
【讨论】:
以上是关于返回上一页时,Android应用程序中的服务连接泄漏的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我返回上一页时,我的 url 不正确(iOS 下的 Chrome,浏览器返回)