অ্যান্ড্রয়েডে কোন ফাংশন  একটা নির্দিষ্ট সময় পর পর এক্সিকিউট করা

আমাদের মাঝে মধ্যে কোন ফাংশন  একটা নির্দিষ্ট সময় পর পর এক্সিকিউট করার দরকার হতে পারে। তা আমরা করতে পারি Handler এর মাধ্যমে। নিচে একটা একটা অ্যাপের সোর্স দিয়েছি। যেখানে ৫ সেকেন্ড পর পর বর্তমান টাইম একটা টেক্সট ভিউতে দেখাবে।

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

import java.util.Calendar;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

    TextView textView;
    Date currentTime;
 Handler handler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView) findViewById(R.id.text_view);


         handler = new Handler();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                currentTime = Calendar.getInstance().getTime();
                textView.setText(currentTime.toString());

                handler.postDelayed(this, 5000);
            }
        }, 5000);


    }

}

উপরের প্রতি পাঁচ সেকেন্ড পর পরই টাইম পরিবর্তন হতে থাকবে। আমরা যদি শুধু একবার নির্দিষ্ট সময় পর কোন কোড এক্সিকিউট করতে চাই, তাহলে উপরের কোড থেকে handler.postDelayed(this, 5000); এ লাইনটা রিমুভ করে দিলেই হবে। তাহলে নির্দিষ্ট সময় পর একবার কোডটি এক্সিকিউট হবে। এখানে টাইম মিলিসেকেন্ডে দিতে হয়। ৫০০০ মানে ৫ সেকেন্ড। আমরা চাইলে যে কোন সময় দিতে পারি এখানে।

উপরের কোড দিয়ে যতক্ষণ পর্যন্ত অ্যাপটা চলবে, ব্যাগগ্রাউন্ডে থাকলেও এই কোডটা রান হতে থাকবে। অ্যাপ পজ করলে তা বন্ধ করে করে দিতে চাইলেঃ

 @Override
    protected void onPause() {
        super.onPause();
        handler.removeCallbacksAndMessages(null);
    }

Leave a Reply