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.

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 />

และทำงานตามคำสั่ง

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

Saved successfully!

Ooh no, something went wrong!