20.11.2016 Views

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!