Android 从不同活动的服务中获取价值
您好,我正在尝试制作一个时间计数器,该计数器应在后台或当用户离开活动时在应用程序上工作 它工作得很好,我可以从我的服务中获得时间,让他在后台运行应用程序 我的问题是,当我离开绑定服务的活动并重新输入该活动时,同一个服务变量会得到不同的值 当我第一次调用Android 从不同活动的服务中获取价值,android,Android,您好,我正在尝试制作一个时间计数器,该计数器应在后台或当用户离开活动时在应用程序上工作 它工作得很好,我可以从我的服务中获得时间,让他在后台运行应用程序 我的问题是,当我离开绑定服务的活动并重新输入该活动时,同一个服务变量会得到不同的值 当我第一次调用startTime()时,我的两个日志调用log.I(“时间2”,时间+”)和log.I(“时间”,时间+”)。当我离开活动并重新输入它时,我会得到日志,日志中的log.I(“时间2”,时间+”)保持正确的时间,但log.I(“时间”,时间+”)始
startTime()
时,我的两个日志调用log.I(“时间2”,时间+”)
和log.I(“时间”,时间+”)
。当我离开活动并重新输入它时,我会得到日志,日志中的log.I(“时间2”,时间+”)
保持正确的时间,但log.I(“时间”,时间+”)
始终显示0
如何获取上次启动服务时的time
值
这是我的服务代码:
public class OnTheWayCounterService extends Service{
long time;
boolean stopThread;
private final IBinder mBinder = new LocalBinder();
public boolean isRunning()
{
return !stopThread;
}
public void stopTime()
{
stopThread = true;
time = 0;
}
public void startTime()
{
stopThread = false;
startStopWatch();
time = 0;
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder;
}
public void startStopWatch()
{
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run()
{
time++;
Log.i("time 2", time+"");
if(stopThread == false)
startStopWatch();
}
}, 1000);
}
public class LocalBinder extends Binder {
public OnTheWayCounterService getService() {
// Return this instance of LocalService so clients can call public methods
return OnTheWayCounterService.this;
}
}
public String getOnTheWayTime()
{
long hours = time / 3600;
long minutes = time / 60;
long seconds = time % 60;
Log.i("time", time+"");
String sMinutes;
String sSeconds;
if(minutes < 10)
sMinutes = "0" + minutes;
else
sMinutes = minutes+"";
if(seconds < 10)
sSeconds = "0" + seconds;
else
sSeconds = seconds+"";
return hours + ":" + sMinutes + ":" + sSeconds;
}
}
我的问题是顶部
@Override
protected void onStop() {
super.onStop();
// Unbind from the service
if (mBound) {
unbindService(mConnection);
mBound = false;
}
}
我把它和它的工作
@Override
protected void onStop() {
super.onStop();
// Unbind from the service
if (mBound) {
unbindService(mConnection);
mBound = false;
}
}