我有一个非常烦人的问题,我现在一直试图解决这个问题......
所以,我有活动A和活动B.你可以从A导航到B.当我导航到活动B时,我创建了一个我想在后台运行的计时器,只测量自按下按钮后的时间但是,当我回到活动A并尝试再次导航到B时,我发现它重置回原始状态,尽管事实上我没有销毁它。有没有什么方法可以让它在后台工作,或者在我导航回来时没有重置?
答案 0 :(得分:0)
正如您所指出的那样,您无法在活动B中拥有某个属性,并希望它能够在整个应用程序生命周期中存活下来。正如我在评论中提到的,您需要Application类实例来维护这些属性。所以我提供相同的代码。我没有面对你在评论中提到的任何问题,请检查一下,并知道是否有任何问题:)
package com.example.sandeepbhandari.myapplication;
import android.app.Application;
/**
* Created by sandeepbhandari on 3/3/16.
*/
public class AppService extends Application{
private static AppService sInstance;
long timeElapsed = 0;
Timer t;
TimerTask task;
@Override
public void onCreate() {
super.onCreate();
sInstance = this;
}
public void startTimer(){
t = new Timer();
task = new TimerTask() {
@Override
public void run() {
timeElapsed ++;
}
};
t.scheduleAtFixedRate(task, 0, 1000);
}
public void stopTimer(){
if(t != null) {
t.cancel();
}
}
public static AppService getInstance() {
return sInstance;
}
}
要使用此应用程序类,您需要更新manifest.xml文件
<application
android:name=".AppService"
如果您想要启动计时器(在您的情况下,在活动B中按钮的onClickListener),只需调用
AppService service = AppService.getInstance();
service.startTimer();
停止只需致电
AppService service = AppService.getInstance();
service. stopTimer();
只要您想看到时间过去,只需说出Log.d("sandeep", "" + service.timeElapsed);
我发现这个问题:你还有问题吗? lemme知道:)