ANDROID APP
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
58 บทที่ 3 เธรด เซอร์วิส รีซีฟเวอร์ และการแจ้งเตือน<br />
//use when initially starting a thread<br />
myThread.setDaemon(true);<br />
myThread.start();<br />
วิธีสุดท้ายที่ใช้ในการยกเลิกการทำงานของเธรด คือการใช้คำสั่ง while(stillRunning)<br />
ในเมธอด run() และใช้คำสั่ง stillRunning=false เพื่อยกเลิกการทำงานของเธรด<br />
กรรมวิธี: การเรียกใช้งานเธรดร่วมกันระหว่างแอพ<br />
จากกรรมวิธีก่อนหน้านี้ คุณสามารถนำไปประยุกต์ในการเขียนแอพเพื่อใช้งานเธรดหลายๆ เธรด<br />
ภายใต้แอพเดียวกันได้ และในทางกลับกัน คุณสามารถใช้งานเธรดเพียงเธรดเดียวร่วมกับแอพหลายๆ<br />
ตัวได้ด้วย อย่างเช่นว่าถ้าคุณมีแอพอยู่ 2 ตัวที่ต้องการสื่อสารข้อมูลระหว่างกัน ก็ให้ใช้โปรโตคอล<br />
Inter-Process Communication (IPC) ในการทำงาน ตามขั้นตอนนี้<br />
1. กำหนดให้แอพที่จะทำงานร่วมกันมีการลงทะเบียนแพ็คเกจด้วยคีย์เดียวกันเพื่อเหตุผล<br />
ด้านความปลอดภัย<br />
2. กำหนดให้แอพทำงานด้วย User ID เดียวกันด้วยการประกาศค่าแอททริบิวต์<br />
android:sharedUserId=”my.shared.userid” ซึ่งอยู่ในไฟล์ AcitivityManifest.<br />
xml ของแต่ละแอพ<br />
3. ประกาศให้แอคทิวิตี้หรือคอมโพเน็นต์นั้นทำงานอยู่ภายใต้กระบวนการเดียวกันด้วยการ<br />
ประกาศค่าแอททริบิวต์ android:process=”my.shared.processname” ซึ่งอยู่ในไฟล์<br />
AcitivityManifest.xml ของแต่ละแอพให้มีค่าเดียวกัน<br />
ขั้นตอนเหล่านี้เป็นขั้นตอนง่ายๆ ที่ใช้ในการกำหนดเพื่อให้แน่ใจว่าคอมโพเน็นต์ทั้ง 2 ตัวทำงาน<br />
อยู่ภายใต้เธรดเดียวกัน และมีการแชร์ข้อมูลร่วมกัน สำหรับรายละเอียดขั้นตอนการทำงานและสิทธิ์<br />
ต่างๆ ในการแชร์ข้อมูลนั้น เราจะมาพูดถึงอีกครั้งในบทที่ 11 “เทคนิคขั้นสูงสำหรับพัฒนาแอพบน<br />
แอนดรอยด์”<br />
การส่งข้อมูลระหว่างเธรด : แฮนด์เลอร์ (Handler)<br />
หลังจากที่ได้รู้เกี่ยวกับการสั่งให้เธรดทำงานร่วมกันระหว่างเธรดหลักและเธรดย่อยกันไปแล้ว<br />
ทีนี้เรามากำหนดให้เธรดทั้ง 2 สามารถส่งผ่านข้อมูลร่วมกันได้บ้าง ซึ่งตัวอย่างการทำงานประเภทนี้ก็<br />
อย่างเช่น<br />
m เธรดหลักทำงานที่เกี่ยวข้องกับเวลา ต้องการความรวดเร็ว และมีการส่งข้อมูลไปประมวล<br />
ผลยังเธรดย่อยซึ่งต้องใช้ระยะเวลาประมวลผลนาน<br />
m มีการประมวลผลข้อมูลขนาดใหญ่ ซึ่งในระหว่างการประมวลผลมีการส่งข้อมูลที่ประมวล<br />
ผลแล้วบางส่วนกลับไปยังเธรดเพื่อแสดงผล<br />
การทำงานเช่นนี้เราจะใช้แฮนด์เลอร์ (Handler) มาช่วย ซึ่งเป็นออบเจ็กต์ที่ใช้ในการส่งข้อมูล<br />
ระหว่างเธรด โดยที่แฮนด์เลอร์แต่ละตัวจะถูกรวมเข้ากับเธรดแบบซิงเกิลเพื่อส่งผ่านข้อมูลเข้าสู่เธรดนี้<br />
และทำงานตามคำสั่ง