我在 Android 中的 TimerTask 大部分时间只运行一次,有时它会更频繁地启动然后停止。
基本上我想要一个应用程序来跟踪设备的传感器数据。
我有一个 MainActivity 和 2 个用于传感和记录的服务。
这是日志记录部分:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (!started) {
started = true;
}
logfile = new File(Environment.getExternalStorageDirectory() + File.separator + "log.csv");
if (!logfile.exists()) {
try {
logfile.createNewFile();
//FileWriter fw = new FileWriter(logfile, true);
//fw.write("Modell;GPS-Zeit[Millis];Lat;Lon;Alt;Speed;AccX;AccY;AccZ;LinAccX;LinAccY;LinAccZ\n");
//fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
myTimer = new Timer();
myTimer.schedule(pingTimerTask, 1000, 1000);
myTimer.schedule(logTimerTask, 500,500);
Toast.makeText(this, "LogService started", Toast.LENGTH_SHORT).show();
Log.i(T, "LogService started");
return super.onStartCommand(intent, flags, startId);
}
这是 TimerTask:
TimerTask logTimerTask = new TimerTask() {
@Override
public void run() {
try {
logData();
} catch (Exception e) {
e.printStackTrace();
}
}
};
日志数据()
private void logData() {
currentMsg = createMsg();
try {
FileWriter fw = new FileWriter(logfile, true);
fw.write(currentMsg + "\n");
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
logSize+=currentMsg.length();
for (Listener l : listener) {
l.logged(logfile.toString(), logSize);
}
}
谁能告诉我定时器有什么问题?
谢谢