返回上一页时 android 应用中的服务连接泄漏
Service Connection Leak in android app when back to a previous page
你好,我正在开发一个打卡出勤应用程序,它有一个定时器服务,当用户打卡时运行。我遇到的问题是当我启动服务然后按下 phone 到 return 到上一页 我发现服务连接泄漏,我不确定如何解决这个问题,因为它似乎停止了服务。
//onStart - 在服务中启动计时器 class
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;
}
//我如何在 activity class
中绑定意图
Intent i = new Intent(this, StartTimerService.class);
bindService(i, seamysConnection, Context.BIND_AUTO_CREATE);
enter image description here
任何帮助将不胜感激
当 Android OS 破坏 Activity
并发现 A ServiceConnection
仍然绑定到 运行 Service
时,就会发生这种情况,所以你在销毁您的 Activity
之前需要 Unbind
服务(返回上一页
)
解绑服务器
unbindService(seamysConnection);
注:
您应该使用相同的 context
绑定服务和解除绑定服务。如果您将服务与 getApplicationContext()
绑定,那么您还应该使用 getApplicationContext.unbindService(..)
你好,我正在开发一个打卡出勤应用程序,它有一个定时器服务,当用户打卡时运行。我遇到的问题是当我启动服务然后按下 phone 到 return 到上一页 我发现服务连接泄漏,我不确定如何解决这个问题,因为它似乎停止了服务。
//onStart - 在服务中启动计时器 class
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;
}
//我如何在 activity class
中绑定意图 Intent i = new Intent(this, StartTimerService.class);
bindService(i, seamysConnection, Context.BIND_AUTO_CREATE);
enter image description here
任何帮助将不胜感激
当 Android OS 破坏 Activity
并发现 A ServiceConnection
仍然绑定到 运行 Service
时,就会发生这种情况,所以你在销毁您的 Activity
之前需要 Unbind
服务(返回上一页
)
解绑服务器
unbindService(seamysConnection);
注:
您应该使用相同的 context
绑定服务和解除绑定服务。如果您将服务与 getApplicationContext()
绑定,那么您还应该使用 getApplicationContext.unbindService(..)