ANDROID APP
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
51<br />
บทที่ 3<br />
เธรด เซอร์วิส รีซีฟเวอร์<br />
และการแจ้งเตือน<br />
ในบทนี้คุณจะได้ศึกษาเกี่ยวกับการออกแบบโครงสร้างของแอพ โดยเราจะอธิบายถึงการใช้<br />
คำสั่งเธรด (Thread) คำสั่งนี้เป็นคำสั่งที่ใช้ควบคุมการทำงานของงานย่อยต่างๆ ที่เซอร์วิส (Service)<br />
และรีซีฟเวอร์ (Receiver) ก็สามารถใช้งานร่วมกับเธรดได้ แอพประเภทวิดเจ็ตมีการนำเธรดเข้าไป<br />
ช่วยการทำงาน ซึ่งจะช่วยให้นักพัฒนาสามารถสร้างการทำงานแบบแจ้งเตือนได้หลายอย่าง<br />
เธรด (Thread)<br />
การทำงานของทุกๆ แอพนั้น โดยพื้นฐานแล้วจะทำงานแบบงานเดี่ยวหรือ Single Task ซึ่งจะ<br />
ทำงานไปเรื่อยๆ ตามลำดับของคำสั่ง และเพื่อเป็นการหลีกเลี่ยงเหตุการณ์จอภาพค้างเวลาที่ต้อง<br />
ทำงานเป็นเวลานาน เช่น การดาวน์โหลดข้อมูลหรือการคำนวณค่าที่ซับซ้อน เราจะกำหนดให้งานพวก<br />
นี้ทำงานแบบเบื้องหลัง โดยผู้เขียนแอพจะเป็นผู้กำหนดว่างานใดควรทำเบื้องหน้า และงานใดควรทำ<br />
เบื้องหลัง ซึ่งระบบปฏิบัติการแอนดรอยด์จะมีบทบาทในการจัดลำดับความสำคัญของงานที่จะทำ<br />
แอพในปัจจุบันจะใช้เธรดเข้ามาช่วยเพิ่มประสิทธิภาพในการทำงาน บางครั้งถ้าแอพทำงาน<br />
ผิดพลาด เกิดอาการค้าง จอภาพก็จะแสดงข้อความแจ้งเตือน ดังรูปที่ 3.1<br />
กรรมวิธี: การเรียกใช้งานเธรดลำดับที่ 2<br />
ในส่วนนี้คุณจะได้เห็นการทำงานเวลาที่กดปุ่มบนจอภาพแล้ว แอพจะเล่นเสียงเรียกเข้า<br />
(Ringtone) โดยเราจะสาธิตให้เห็นการทำงานของแอพเวลาที่ทำงานที่ต้องใช้เวลาในการประมวลผล<br />
โดยในชุดคำสั่งด้านล่างนี้จะเรียกใช้ฟังก์ชั่น play_music() เพื่อให้ทำงานโดยไม่มีการแยกเธรด<br />
ย่อยในระหว่างที่แอพกำลังเล่นเสียงเรียกเข้า<br />
Button startButton = (Button) findViewById(R.id.trigger);<br />
startButton.setOnClickListener(new View.OnClickListener() {<br />
public void onClick(View view){<br />
// BAD USAGE: function call to time-consuming<br />
// function causes main thread to hang