私の Android の TimerTask は、ほとんどの場合 1 回だけ実行されます。
基本的に、デバイスのセンサーデータを追跡するアプリが必要です。
センサーとログ用に 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);
}
}
タイマーの何が問題なのか誰か教えてもらえますか?
ありがとう