OnCreateでそのtime()関数を5秒ごとにループするにはどうすればよいですか..私がAndroid =)の初心者であるのを手伝ってください... onCreateでtime()関数を実行したい5秒ごと。
public void onCreate(Bundle savedInstanceState) {
time(); //<-- How can i execute this every 5 seconds.
}
private void time() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
int success;
gps = new GPSTracker(AdminMenu.this);
if(gps.canGetLocation()){
tmplat=latitude;
tmplong=longitude;
// new InsertUser1().execute();
}
else{
gps.showSettingsAlert();
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("LATTTTT" + tmplat);
System.out.println("LONGGGGGGGG" + tmplong);
}
}, 5000); // 5 sec
}
何か助けていただければ幸いです...
ハンドラーを使用できます。例では、毎秒yourfunction()を呼び出します。
// Init
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
@Override
public void run() {
yourfunction();
handler.postDelayed(this, 1000);
}
};
//Start
handler.postDelayed(runnable, 1000);
このようにしてみてください! startTimerメソッドのコードを置き換えるだけです。うまくいくはずです。
private Timer timer;
private TimerTask timerTask;
private Handler handler = new Handler();
//To stop timer
private void stopTimer(){
if(timer != null){
timer.cancel();
timer.purge();
}
}
//To start timer
private void startTimer(){
timer = new Timer();
timerTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run(){
//your code is here
}
});
}
};
timer.schedule(timerTask, 5000, 5000);
}
Kotlinでこれを行う簡単な方法を次に示します。
private lateinit var timer: Timer
private val noDelay = 0L
private val everyFiveSeconds = 5000L
override fun onResume() {
super.onResume()
val timerTask = object : TimerTask() {
override fun run() {
runOnUiThread { /* your code here */ }
}
}
timer = Timer()
timer.schedule(timerTask, noDelay, everyFiveSeconds)
}
override fun onPause() {
super.onPause()
timer.cancel()
timer.purge()
}
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if (activefragment == null)
{
fragmentTransaction.remove(activefragment);
} else
{
fragmentTransaction.replace(R.id.fragmentContainer, activefragment, activefragment.getTag());
fragmentTransaction.disallowAddToBackStack();
}
fragmentTransaction.commit();
}
};
handler.postDelayed(runnable, timeout);