How to loop or execute a function every 5 seconds on Android

前端 未结 4 558
旧巷少年郎
旧巷少年郎 2020-12-28 22:11

How can I loop that time() function on the onCreate every 5 seconds.. help me I\'m a newbie in Android =) ... I want to execute time() function in onCreate every 5 seconds.<

相关标签:
4条回答
  • 2020-12-28 22:41
     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);
    
    0 讨论(0)
  • 2020-12-28 22:50

    Here's a simple way to do it in 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()
    }
    
    0 讨论(0)
  • 2020-12-28 22:51

    You could use a handler, given example would call yourfunction() every second

    // 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);
    
    0 讨论(0)
  • 2020-12-28 22:58

    Try to do like this ! just replace your code in startTimer method. It should work..

    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);
        }
    
    0 讨论(0)
提交回复
热议问题