Ich möchte, dass meine Funktion aufzurufen alle 10 Sekunden mit einem Timer und meine Funktion ein Handler hat es zeigt einen Fehler:Android Call-Methode alle 10 Sekunden mit Handler
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Meine Funktion:
public void startData(){
doBindService();
new Handler().post(mQueueCommands);
}
diese startData() hat eine öffentliche Variable "btIsConnected", immer wenn btIsConnected== true
, ich möchte aufhören zu rufen, sonst für die ersten zwei Minuten möchte ich startData() alle 10 Sekunden
class startLiveDataTimerTask extends TimerTask{
public void run(){
startData();
}
}
private void tryConnectEveryTenSeconds() {
Timer timer = new Timer();
timer.schedule(new startLiveDataTimerTask(), 0, 10000);
}
in onCreate()
:
long futureTimeInTwoMinute = System.currentTimeMillis() + 120000;
Intent i = new Intent(ObdConstants.StartLiveData.getValue()); sendBroadcast(i); // this broadcaster is used to call StartData() for the first time
if(System.currentTimeMillis()<futureTimeInTwoMinute){
// how do I make a time counter appropriately?
if(btIsConnected){
Log.d(TAG, "is connected!");
//do nothing
}else{
Log.d(TAG, "try to connect every ten seconds....");
tryConnectEveryTenSeconds();
}
}
Hallo danke für Ihre Hilfe! Nachdem ich den Code geändert habe, funktionierte es, aber ich fand, dass startData() wiederholt alle 50 oder 100 Millisekunden aufgerufen wird ... weißt du warum? – Deidara
Wie rufen Sie die tryConnectEveryTenSeconds() -Methode auf? – Kelevandos
Ich denke, ich muss mehr Details hinzufügen, also habe ich meinen Beitrag aktualisiert. Vielen Dank! – Deidara