ANDROID APP
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
66 บทที่ 3 เธรด เซอร์วิส รีซีฟเวอร์ และการแจ้งเตือน<br />
2. ประกาศเซอร์วิสในไฟล์ AndroidManifest.xml โดยการเพิ่มคำสั่งนี้<br />
<br />
3. โอเวอร์ไรด์เมธอด onCreate() และ onDestroy() (ในโปรแกรม Eclipse สามารถ<br />
ทำได้โดยคลิกขวาที่คลาส และเลือกเมนู Source → Override/Implement<br />
Methods) ซึ่งเมธอดเหล่านี้จะทำงานเมื่อเซอร์วิสเริ่มหรือหยุดทำงาน<br />
4. โอเวอร์ไรด์เมธอด onBind() ที่จะทำงานเมื่อมีการเชื่อมโยงระหว่างเซอร์วิสกับ<br />
คอมโพเน็นต์<br />
5. สั่งให้เซอร์วิสเริ่มทำงานโดยใช้คำสั่งจากภายนอกมาสั่งการ เพราะเซอร์วิสไม่สามารถเริ่ม<br />
การทำงานด้วยตัวเองได้<br />
เราจะใช้ฟังก์ชั่น play_music() จากกรรมวิธีอันแรกสุดของบทนี้มาสั่งให้ทำงานแบบเซอร์วิส<br />
ตามรายละเอียดในรูปก่อนหน้านี้ตามชุดคำสั่งที่ 3.10 ซึ่งมีการทำงานดังนี้<br />
m คำสั่ง Toast จะใช้ในการแสดงข้อมูลเมื่อเซอร์วิสเริ่มหรือหยุดการทำงาน<br />
m โอเวอร์ไรด์เมธอด onBind() แต่ไม่มีการใช้งานใดๆ<br />
m นำคำสั่งเธรดมาใช้งานเพื่อให้เวลาที่เล่นไฟล์เพลงแล้วจะไม่ไปหยุดการทำงานอื่นๆ ของ<br />
จอภาพ<br />
m เมื่อแอคทิวิตี้ถูกยกเลิก เซอร์วิสจะไม่หยุดการทำงาน (อย่างเช่นการหมุนจอภาพแล้วจะไม่<br />
ส่งผลกับการเล่นไฟล์เพลง) จะเห็นได้ว่าเซอร์วิสถูกสั่งให้เริ่มทำงานโดยแอคทิวิตี้ แต่การ<br />
ทำงานที่เกิดขึ้นภายในเซอร์วิสนั้นจะถูกควบคุมโดยเซอร์วิสเอง<br />
ชุดคำสั่งที่ 3.10 src/com/cookbook/simple_service/SimpleService.java<br />
package com.cookbook.simple_service;<br />
import android.app.Service;<br />
import android.content.Intent;<br />
import android.media.MediaPlayer;<br />
import android.os.IBinder;<br />
import android.widget.Toast;<br />
public class SimpleService extends Service {<br />
@Override<br />
public IBinder onBind(Intent arg0) {<br />
return null;<br />
}<br />
boolean paused = false;