আসসালামুআলাইকুম
আসা করি আপনারা সকলেই আল্লাহর রহমতে ভালো আছেন। আমিও ভালো আছি। আর ভালো না থাকলে তো ভালো লাগার ওয়েবসাইট TrickBD আছেই। যেখানে আমরা নিত্য নতুন টিপস এবং Trick পেয়ে থাকি।
J2me টিউটোরিয়াল এর আরো একটি পার্ট নিয়ে আপনাদের মাঝে আবারো হাজির হলাম। আজকে যে টপিক নিয়ে আলোচনা করতে যাচ্ছি তা নিম্নে দেওয়া হোলো।
Timer MIDlet
বন্ধুরা আজকের এই টপিক এ আমি J2me Timer এবং TimerTask ক্লাস নিয়ে আলোচনা করতে যাচ্ছি। আমরা এতি পূর্বে Thread নিয়ে আলোচনা করেছি। Timer ও Thread এর মতোই। কিন্তু, পুরোপুরি Thread নয়। আমরা দুটো Thread নিয়ে আলোচনা করেছিলাম Thread.sleep() এবং Thread.start. যারা আগের পার্ট গুলো দেখেন নি তারা আমার প্রোফাইল এ ঢুকে দেখে আসতে পারেন। Timer হচ্ছে একটা Time বেস Thread এর মতো। অর্থাৎ, নির্দিষ্ট millisecond দেওয়া থাকবে সেই millisecond পর ইক্সকিউট হতে থাকবে। আমরা একটা উদাহারণ এর সাহায্যে Timer এবং TimerTask শিখবো। তো, নিচের স্টেপ গুলো অনুসরন করুন।
প্রথমে আমাদেরকে java.util প্যাকেজ টি import করে নিতে হবে package browser থেকে।
import java.util.*;
এরপর আমরা গ্লোবাল ভেরিয়েবল গুলো ডিক্লেয়ার করবো।
Display disp; Form f; Command stop, exit; Timer tm; TimerTaskExample tt; int count = 0;
এখন আমরা উপরিয়েক্ত ভেরিয়েবল গুলো কনস্ট্রাক্টর এ ইনিটিয়ালাইজ করবো। তো, প্রথমে Display এবং Form Object তৈরী করে নেই।
disp = Display.getDisplay(this); f = new Form("Timer MIDlet");
এখন আমরা দুটো কমান্ড তৈরী করবো এবং Form এ যুক্ত করবো।
stop = new Command("Stop", Command.STOP,2); exit = new Command("Exit", Command.EXIT,1); f.addCommand(stop); f.addCommand(exit); f.setCommandListener(this);
এখন আমরা Timer Object তৈরী করবো
tm = new Timer();
এরপর, TimerTaskExample অবজেক্ট তৈরী করবো
tt = new TimerTaskExample();
এখন, এই TimerTaskExample ক্লাস টি schedule করবো। schedule আমাদের ভালো ভাবে বুঝতে হবে।
tm.schedule(tt, 500);
যদি আমরা উপরের মতো এভাবে দেই তাহলে TimerTaskExample ক্লাস তা 500 millisecond পর একবার ইক্সকিউট হবে। এটা শুধু একবার এই ইক্সকিউট হবে।
আর যদি আমরা নিচের মতো এভাবে দেই
tm.schedule(tt, 500, 1000);
তাহলে TimerTaskExample ক্লাস টি প্রথমে 500 millisecond পর ইক্সকিউট হবে। এরপর, 1000 millisecond তথা 1 সেকেন্ড পর পর ইক্সকিউট হতে থাকবে। আসা করি বুঝতে পেরেছেন বিষয় টা। আপনারা আপনাদের ইচ্ছা মতো millisecond দিতে পারবেন। আমাদের Source কোড টি তে 2nd schedule টি ব্যবহার করা হয়েছে। এরপর আমরা startApp() এ Form Display তে view করাবো
disp.setCurrent(f);
এখন, আমরা commandAction এ যাবো সেখানে দুটো কমান্ড কে নিয়ন্ত্রণ করবো।
if (c == exit) { notifyDestroyed(); }
কমান্ড exit হলে অ্যাপ বের করে দিবে।
else if (c == exit) { tm.cancel(); }
আমরা যদি Stop কমান্ড এ ক্লিক করি তাহলে তাহলে Timer ক্যানসেল অর্থাৎ, Timer বন্ধ হয়ে যাবে।
এখন, আমরা TimerTaskExample ক্লাস তৈরী করবো। প্রথমে কোড ব্লক তৈরী করে নেই।
public class TimerTaskExample extends TimerTask { public void run() { } }
এখন আমরা run method এর ভিতরে টাইপ করবো।
f.append("Count Timer" + ++count + "\n");
প্রতি সেকেন্ড এ এটি Form যুক্ত হবে কেননা প্রতি সেকেন্ড এ TimerTaskExample klass টি ইক্সকিউট হবে। তো এই পর্যন্তই ছিলো এখন কার মতো আলোচনা। নিচ থেকে পুরো Source কোড টি ডাউনলোড করে নেন।
Download TimerMID Example Source Code
View Full Source Code
/* * This is Timer MIDlet Example * Timer and TimerTask class */ import java.util.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class TimerMID extends MIDlet implements CommandListener { Display disp; Form f; Command stop, exit; Timer tm; TimerTaskExample tt;int count = 0; public TimerMID() { disp = Display.getDisplay(this); f = new Form("Timer MIDlet"); stop = new Command("Stop", Command.STOP,2); exit = new Command("Exit", Command.EXIT,1); f.append("Wait For Timer\n"); f.addCommand(stop); f.addCommand(exit); f.setCommandListener(this); tm = new Timer(); tt = new TimerTaskExample(); tm.schedule(tt,500,1000); } public void startApp() { disp.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable d) { if (c == exit) { notifyDestroyed(); } else if (c == stop) { tm.cancel(); } } public class TimerTaskExample extends TimerTask { public void run() { f.append("Count Timer : " + ++count + "\n"); } } }
Thanks For Read This Post