Timer    selalu merupakan bagian penting dari pemrograman.  Mereka
 bahkan lebih penting dalam domain mobile sebagai dua aplikasi yang 
paling digunakan pada ponsel adalah permainan dan auto sinkronisasi 
aplikasi jaringan diaktifkan.  Kedua jenis aplikasi sangat bergantung pada ada timer untuk berfungsi.  Penginderaan ini Sun Microsystems sudah termasuk Timer kelas dan TimerTask dalam Mobile Information Device Profile (MIDP). 
 
  Kedua kelas ini sangat mudah digunakan dan memungkinkan kita untuk melakukan fungsi waktu kompleks.  Mereka dapat digunakan dalam beberapa tugas seperti: 
-   Permainan 
-   Animasi 
-   Otomatis sinkronisasi data dari server 
-   Pengingat 
-   Splash layar untuk menampilkan logo perusahaan 
-   Auto bantuan fungsi seperti di dalam Nokia 6610 
Dengan demikian fungsi waktu adalah sangat penting.  Sekarang kita akan membahas Timer kelas dan TimerTask lebih luas.  Namun
 sebelum mengejar lebih lanjut saya ingin memberitahu Anda sebuah fakta 
penting, kelas Timer tidak dapat menjamin ketepatan interval.  Jadi kita tidak harus menggunakan class Timer untuk waktu yang sangat akurat menjaga tugas-tugas seperti stop watch.  Kami telah memberikan contoh kode untuk stop watch hanya untuk membuat Anda terbiasa dengan pemrograman untuk timer. 
 Timer 
             Kelas Timer terkandung dalam paket java.util dari Mobile Information Device Profile (MIDP).  Kelas Timer memberikan kita 2 jenis ketepatan waktu, yaitu: 
  Timer
 menyediakan satu waktu eksekusi untuk tugas-tugas seperti menghidupkan 
splash screen atau menampilkan bantuan secara otomatis setelah beberapa 
waktu, sekali.  Ada 2 metode dalam kelas Timer yang dapat menjadwalkan Timer untuk berjalan sekali, yaitu: 
  o       public void jadwal (TimerTask task, waktu Tanggal) 
  Metode ini dapat digunakan untuk penjadwalan tugas tertentu untuk eksekusi pada waktu yang ditentukan.  Jika waktu saat ini sudah melewati waktu yang disebutkan oleh programmer, tugas dijadwalkan untuk eksekusi langsung. 
  o       public void jadwal (TimerTask task, long delay) 
  Metode jadwal eksekusi TimerTask ditentukan setelah jumlah yang ditentukan keterlambatan. 
  Eksekusi diulang tugas diperlukan untuk situasi tertentu seperti aplikasi game dan aplikasi auto sinkronisasi.  Permainan umumnya melibatkan animasi dimana perubahan frame dihitung melalui penggunaan Timer dengan eksekusi diulang.  Kelas Timer menyediakan metode berikut untuk eksekusi diulang: 
  Penundaan eksekusi tetap diulang 
  Dalam
 jenis penjadwalan tugas-tugas yang dijadwalkan untuk berjalan relatif 
terhadap waktu sebenarnya dari pelaksanaan eksekusi sebelumnya. 
  o       public void jadwal (TimerTask task, firstTime Tanggal, waktu yang panjang) 
  Metode ini dapat digunakan untuk penjadwalan tugas tertentu berulang kali untuk awal eksekusi pada waktu yang ditentukan. 
  o       public void jadwal (TimerTask task, long delay, periode panjang) 
  Metode jadwal eksekusi TimerTask tertentu berulang kali setelah jumlah yang ditentukan keterlambatan. 
  Bunga tetap diulang eksekusi 
  Dalam jenis penjadwalan tugas-tugas yang dijadwalkan untuk berjalan secara berkala waktu.  Jika
 salah satu eksekusi tertunda maka eksekusi lainnya akan terjadi dengan 
cepat sehingga memastikan bahwa dalam jangka panjang frekuensi dari 
eksekusi adalah kebalikan dari periode yang ditentukan. 
  o       public void scheduleAtFixedRate (TimerTask task, firstTime Tanggal, waktu yang panjang) 
  Metode ini dapat digunakan untuk penjadwalan tugas tertentu berulang kali untuk awal eksekusi pada waktu yang ditentukan. 
  o       public void scheduleAtFixedRate (TimerTask task, long delay, periode panjang) 
  Metode jadwal eksekusi TimerTask tertentu berulang kali setelah jumlah yang ditentukan keterlambatan. 
 TimerTask 
  Kelas ini merupakan tugas yang harus dijadwalkan oleh Timer.  TimerTask adalah kelas abstrak dan menerapkan 'Runnable' antarmuka dan dengan demikian mengandung run () method.  Tindakan yang harus dilakukan dalam eksekusi Timer harus dilaksanakan di jalankan () metode.  Sekarang kita akan melihat contoh praktis ekstensif menggunakan Timer dan TimerTask kelas. 
  Kode Contoh: Timer & TimerTask 
 
 Contoh ini menunjukkan bagaimana bekerja dengan Timer dan TimerTask. Ini tampilan aplikasi adalah stopwatch.  Fitur
 utama dari aplikasi ini adalah bahwa kita dapat menyimpan upto 32 
timing berbeda sepersekian detik dalam array dan menampilkannya pada 
kanvas.  Harap
 diingat bahwa timer MIDP tidak boleh digunakan untuk kegiatan yang 
memerlukan waktu precesion mutlak seperti acara trek dan lapangan. 
  Tombol berikut digunakan dalam kami stopwatch: 
  Ø     '*' Tombol 
  Hal ini digunakan untuk memulai dan menghentikan stopwatch. 
  Ø     '0 'Tombol 
  Hal ini digunakan untuk mengatur stopwatch untuk nol. 
  Ø     '#' Tombol 
  Hal ini digunakan untuk mengaktifkan fungsi detik. 
  / ************************* / 
  / *                TimerMIDlet.java                       * / 
  / ************************* / 
 mengimpor javax.microedition.midlet *;. 
  mengimpor javax.microedition.lcdui *;. 
  / ** 
    * @ Author SKJ 
    * @ Version 1.0.0 
    * / 
  TimerMIDlet kelas publik meluas javax.microedition.midlet.MIDlet 
  { 
      swasta Tampilan layar; 
       / / Variabel objek defineing 
       TimerCan swasta bisa; 
     
       public void startApp ()      
       { 
           this.display = Display.getDisplay (ini); 
           this.can = new TimerCan (); 
           / / Mengatur tampilan saat ini 
           this.display.setCurrent (this.can); 
       } 
     
       public void pauseApp () { 
       } 
     
       public void destroyApp (boolean unconditional) { 
       } 
  } 
   
  / ************************* / 
  / *                TimerCanvas.java                     * / 
  / ************************* / 
 mengimpor javax.microedition.lcdui *;. 
  import java.util *;. 
  / ** 
    * @ Author SKJ 
    * @ Version 1.0.0 
    * / 
  masyarakat kelas TimerCan meluas kanvas 
  { 
       / / Untuk Timer 
       swasta Timer Timer     ; 
     
       / / Variabel untuk menyimpan waktu 
       jam private int []     ; 
       private int sec []     ; 
       private int min []     ; 
       private int msec []     ; 
     
       / / Variabel kanvas 
       private int maxx     ; 
       private int maxY     ; 
     
       / / Array incement dan pengurangan 
       private int saat ini     ; 
     
       / / Variabel g.drawString untuk ditampilkan di baris berikutnya 
       private int ctrY     ;     
       / Panjang font / toko untuk menampilkan di tengah kanvas 
       private int panjang     ; 
           
       private int offsety;   
     
       / / Variabel waktu 
       swasta String waktu; 
     
       / / Font tinggi ternak dan lebar 
       private int strWid; 
       private int strht;     
     
       boolean swasta gulir     ; 
       private int countpl     ; 
       private int rect     ; 
     
       / / Array increment dan decrement variabel 
       swasta int counter     ; 
     
       / / Untuk memulai dan menghentikan waktu 
       boolean swasta mulai     ; 
       swasta boolean berhenti     ; 
     
       boolean swasta ya     ; 
     
       / / Konstruktor 
       publik TimerCan () 
       { 
           super ()     ; 
           mencoba 
           { 
               / / Mendapatkan heigth dan lebar kanvas 
               this.maxX = this.getWidth ()     ; 
               this.maxY = this.getHeight ()     ;        
               / / Variabel initilizing 
               this.ctrY = 0     ; 
               this.rect = 0     ; 
               this.countpl = 0     ;            
               this.current = 0     ; 
               this.offsetY = 0     ; 
               / / Inisialisasi array dengan 33 Ukuran 
               this.hour = new int [33]     ; 
               this.min = new int [33]     ; 
               this.sec = new int [33]     ; 
               this.msec = new int [33]     ; 
               this.start = false     ; 
               this.stop = true     ; 
               this.yes = true     ; 
               this.scroll = false     ;   
             
               / / Array untuk initilizing nol 
               for (int j = 0     J <= 31; j + +) 
               { 
                   this.hour [j] = 0     ; 
                   this.min [j] = 0     ; 
                   this.sec [j] = 0     ; 
                   this.msec [j] = 0     ; 
               } 
           } 
         
           catch (Exception e) 
           { 
               e.printStackTrace ()     ; 
           } 
       } 
       public void paint (Graphics g) 
       {         
           g.setColor (180254243); 
           / / Menggambar persegi panjang 
           g.fillRect (0,0, Maxx, maxY); 
         
           / / Menginisialisasi Font         
           Font font = Font.getDefaultFont ()     ; 
           / / Mendapatkan lebar dari string                 
           this.strWid =     font.stringWidth ("this.time"); 
           / / Mendapatkan hieght string 
           this.strht = font.getHeight ();             
           this.ctrY = this.strht; 
         
           for (int j = 1     J <= saat ini     J + +) 
           { 
               / / Pengaturan variabel waktu     seperti 00:00:00:00 
               jika (jam [j-1] <10) 
               { 
                   this.time = "0" + String.valueOf (this.hour [j-1]) + ":";   
               } 
               lain 
               { 
                      this.time = String.valueOf (this.hour [j-1]) + ":"     ; 
               } 
              
               if (min [j-1] <10) 
               { 
                   this.time = this.time + "0" + String.valueOf (this.min [j- 
                   1]) + ":"     ; 
               } 
               lain 
               { 
                   this.time = this.time + String.valueOf (this.min [j-1]) +   
                   ":"     ; 
               } 
             
               if (sec [j-1] <10) 
               { 
                   this.time = this.time + "0" + String.valueOf (this.sec [j-1]) 
                  + ":"     ; 
               } 
               lain 
               { 
                   this.time = this.time + String.valueOf (this.sec [j-1]) + 
                   ":"     ; 
               } 
             
               if (msec [j-1] <10) 
               { 
                   this.time = this.time + 
                   "0" + String.valueOf (this.msec [j1]); 
               } 
               lain 
               { 
                   this.time = this.time + String.valueOf (this.msec [j-1]): 
               } 
             
               "." this.time = j + + this.time;                                     
               / / Mendapatkan lebar dari string 
               this.strWid =     font.stringWidth (this.time);           
               this.length =     this.maxX - this.strWid; 
             
               / / Panjang dibagi dua untuk cenrte 
               this.length / = 2;                         
               / / Mengatur Warna dan tampilan waktu yang tersimpan 
               g.setColor (255,0,128);             
               g.drawString (this.time, this.length, this.ctrY- 
               this.offsetY, Graphics.TOP | Graphics.LEFT);                          
               / / Selisih ctrY oleh gieght tali untuk menarik waktu di depan 
               / / Baris 
               this.ctrY + =     this.strht; 
             
           } 
                 
               / / Set variabel waktu seperti 00:00:00:00 
               jika (jam [saat ini] <10) 
               { 
                   this.time = "0" + 
                   String.valueOf (this.hour [saat ini]) + ":"     ; 
               } 
               lain 
               { 
                   this.time = String.valueOf (this.hour [saat ini]) + ":";    
               } 
         
               if (min [saat ini] <10) 
               { 
                   this.time = this.time + 
                   "0" + String.valueOf (this.min [saat ini]) + ":"     ; 
               } 
               lain 
               { 
                   this.time = this.time + 
                   String.valueOf (this.min [saat ini]) + ":"     ; 
               } 
         
               if (detik [saat ini] <10) 
               { 
                   this.time = this.time + 
                   "0" + String.valueOf (this.sec [saat ini]) + ":"     ; 
               } 
               lain 
               { 
                   this.time = this.time + 
                   String.valueOf (this.sec [saat ini]) + ":"     ; 
               } 
         
               if (msec [saat ini] <10) 
               { 
                   this.time = this.time + 
                   "0" + String.valueOf (this.msec [saat ini]); 
               } 
               lain 
               { 
                   this.time = this.time + 
                   String.valueOf (this.msec [saat ini]); 
               }    
         
           / / Mendapatkan lebar dari string 
           this.strWid =     font.stringWidth (this.time); 
           this.length =     this.maxX - this.strWid; 
         
           / / Panjang dibagi dua untuk     menampilkan di tengah 
           this.length / = 2;             
     
           / / Mengatur Warna untuk rect 
           g.setColor (255255255); 
         
           / / Fillrect latar belakang menjalankan menonton                          
           g.fillRect (0,0, Maxx, strht);         
           g.fillRect (0, (countpl + 1) * strht, Maxx, maxY); 
         
           / / Tampilan     jam waktu: menit: detik: msec         
           g.setColor (0,0,0);                                                 
           g.drawString (this.time, panjang, 0, Graphics.TOP | Graphics.LEFT);                                        
         
       } 
       private void startTimer () 
       { 
           TimerTask task = new TimerTask () 
           { 
               public void run () 
               { 
                  msec [saat ini] + +; 
                
                   if (msec [saat ini] == 100) 
                   { 
                       msec [saat ini] = 0; 
                   
                       / / Detik selisih dengan 1 jika sama dengan 100 msec 
                       sec [saat ini] + +; 
                   } 
                   else if (detik [saat ini] == 60) 
                   { 
                       sec [saat ini] = 0; 
                   
                       / / Menit selisih dengan 1 jika sama dengan 60 detik 
                       min [saat ini] + +; 
                   } 
                   lain jika (min [saat ini] == 60) 
                   { 
                       min [saat ini] = 0; 
                         
                       / / Jam selisih dengan 1 Ketika Min sebesar 60 
                       jam [saat ini] + +; 
                                       } 
                   lain jika (jam [saat ini] == 24) 
                   { 
                       jam [saat ini] = 0; 
                   }                                   
                          repaint ();                   
               }   
           };    
          
           Timer Timer = new (); 
           timer.scheduleAtFixedRate (tugas, 10,10);             
         
       }   
     
       / ** 
        * Disebut ketika tombol ditekan. 
        * / 
     
       terlindung     membatalkan keyPressed (int keyCode) 
       { 
           int action = getGameAction (keyCode); 
                 
           if (== tindakan Canvas.UP && offsety> 0) 
           {    
                  offsety - = strht;                         
           } 
         
           if (== tindakan Canvas.DOWN && offsety <kontra * strht && gulir 
           == True) 
           {      
                  offsety + = strht;             
           } 
         
           if (== keyCode Canvas.KEY_STAR) 
           { 
               if (this.start == false) 
               { 
                   this.start = true; 
                   this.stop = false; 
               } 
               lain jika (this.stop == false) 
               { 
                   this.start = false; 
                   this.stop = true; 
                   this.timer.cancel (); 
               } 
               if (mulai == true) 
               { 
                    this.StartTimer (); 
               } 
           } 
         
           if (== keyCode Canvas.KEY_NUM0) 
           {                   
               / / Cancellling efek Timer 
               this.timer.cancel (); 
             
               / / Array untuk menetapkan nol 
               this.hour [saat ini] = 0; 
               this.min [saat ini] = 0; 
               this.sec [saat ini] = 0; 
               this.msec [saat ini] = 0;         
               this.start = false; 
           } 
         
           if (== keyCode Canvas.KEY_POUND)         
           { 
               if (start = palsu!) 
               { 
                   jika (((maxY - ctrY) <strht | | ctrY> = maxY) && offsety 
                   <((32-countpl) * strht) && saat <32) 
                   { 
                        offsety + = this.strht; 
                        this.scroll = true; 
                        this.counter + +; 
                        this.yes = false; 
                   } 
                   lain jika (ya) 
                   { 
                       this.countpl + +; 
                       this.rect + = this.ctrY; 
                   } 
                   jika (saat ini <= 31) 
                   { 
                       this.current + +; 
                       / / Toko waktu saat ini dalam array ketika kunci pon 
                       ditekan 
                      this.hour [saat ini] =     this.hour [saat-1]; 
                       this.min [saat ini] = this.min [saat-1]; 
                       this.sec [saat ini] = this.sec [saat-1]; 
                       this.msec [saat ini] = this.msec [saat-1];                 
                   } 
               } 
           } 
        } 
 
| 
  Ketika Anda menjalankan aplikasi layar berikut akan ditampilkan:  
    | 
 | 
| 
  Bila Anda tekan '*' tombol kemudian memulai timer  
    | 
 | 
| 
  Bila Anda menekan tombol '#' kemudian menampilkan waktu ketika Anda mengklik:  
    | 
 | 
 
Tidak ada komentar:
Posting Komentar