20.11.2016 Views

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;

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

Saved successfully!

Ooh no, something went wrong!