Ich entschloss mich, den Aktualisierungszeitalgorithmus zu vereinfachen. Überall schreiben Sie einen Algorithmus über den Timer. Aber wenn Sie Runnable die Schnittstelle in der Hauptaktivität implementieren, können Sie vermeiden, ein zusätzliches Objekt zu erstellen.Aktualisierungszeit durch Implementierung Runable
Ich möchte es, wenn ich die Aktivierung öffne, wurde die Zeit jede Sekunde aktualisiert. Aber das passiert nicht. Durch das von mir erstellte Tag (ITTERATION) gibt es nur eine Iteration. Anhand eines Beispiels aus HERE
Ich brach bereits mein Gehirn. Helfen Sie mir bitte :(
package pac.twoproject;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class Main2Activity extends AppCompatActivity implements Runnable {
private static final String TAG = "ITTERATION";
TextView tv;
String time;
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
tv = (TextView) findViewById(R.id.textView);
//scheduler.scheduleAtFixedRate(this, 0, 10, TimeUnit.MILLISECONDS);
}
@Override
protected void onResume() {
super.onResume();
scheduler.scheduleAtFixedRate(this, 0, 1000, TimeUnit.MILLISECONDS);
}
@Override
public void run() {
time = sdf.format(new Date(System.currentTimeMillis()));
tv.setText(time);
Log.d(TAG, time);
}
}
In Verbindung stehend? https://StackOverflow.com/questions/9884246/ Versuchen Sie sich zu protokollieren, bevor Sie den Anruf an tv.setText tätigen. Ich vermute, dass dort eine Ausnahme geworfen wird – WorldSEnder
Ich bekomme keine Ausnahme.Oder das Protokoll wird nicht angezeigt oder die Uhrzeit wird erneut angezeigt. – magistr4815
'ScheduledExecutorService' unterdrückt Ausnahmen. Nach einer Ausnahme ist das Runnable standardmäßig nicht geplant. Wickeln Sie Ihren run-Methodenkörper in einen try-catch und loggen Sie sich selbst ein, um zu sehen, ob das passiert. – WorldSEnder