intTypePromotion=1

Hướng dẫn lập trình cơ bản với Android - Bài 5

Chia sẻ: Ha Ngoc Chung | Ngày: | Loại File: PDF | Số trang:9

0
195
lượt xem
104
download

Hướng dẫn lập trình cơ bản với Android - Bài 5

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Service có thể được vận hành theo như đã được lập trình việc sử dụng một Interface mà nó định nghĩa. Các người dùng thiết lập một đường truyền tới đối tượng Service và sử dụng đường kết nói đó để thâm nhập vào Service.

Chủ đề:
Lưu

Nội dung Text: Hướng dẫn lập trình cơ bản với Android - Bài 5

  1. Hư ng d n l p trình cơ b n v i Android - Bài 5 http://diendan.vietandroid.com/cac-bai-hoc-co-kem-ma-nguon/835-huong- Rflink: dan-lap-trinh-co-ban-voi-android-bai-5-a.html List tutorial Bài 0 - Cài ñ t và s d ng Android v i Eclipse Bài 1 - Cơ b n Android Bài 2 - Xây d ng giao di n ñơn gi n Bài 3 - ViewGroup và Custom Adapter Bài 4 - Intent và Broadcast Receiver Bài 5 - Service Bài 6 - SQLite Bài 7 - Content Provider Bài 8 : Thread & Handler (Coming soon) Android Service 4 Tutorial trư c các b n ñã có 1 lư ng ki n th c kha khá, ti p sau ñây mình xin gi i thi u 1 khái ni m cơ b n n a trong android, ñó là Service Service là 1 trong 4 thành ph n chính trong 1 ng d ng Android ( Activity, Service, BroadcastReceiver, ContentProvider) thành ph n này ch y trong h u trư ng và làm nh ng công vi c không c n t i giao di n như chơi nh c, download, x lí tính toán… M t Service có th ñư c s d ng theo 2 cách: - Nó có th ñư c b t ñ u và ñư c cho phép ho t ñ ng cho ñ n khi m t ngư i nào ñó d ng nó l i ho c nó t ng t. ch ñ này, nó ñư c b t ñ u b ng cách g i Context.startService() và d ng b ng l nh Context.stopService(). Nó có th t ng t b ng l nh Service.stopSelf() ho c Service.stopSelfResult(). Ch c n m t l nh stopService() ñ ng ng Service l i cho dù l nh startService() ñư c g i ra bao nhiêu l n - Service có th ñư c v n hành theo như ñã ñư c l p trình vi c s d ng m t Interface mà nó ñ nh nghĩa. Các ngư i dùng thi t l p m t ñư ng truy n t i ñ i tư ng Service và s d ng ñư ng k t nói ñó ñ thâm nh p vào Service. K t n i này ñư c thi t l p b ng cách g i l nh Context.bindService() và ñư c ñóng l i b ng cách g i l nh Context.unbindService(). Nhi u ngư i dùng có th k t n i t i cùng m t thi t b . N u Service v n chưa ñư c kh i ch y, l nh bindService() có th tùy ý kh i ch y nó. Hai ch ñ này thì không tách bi t toàn b . B n có th k t n i v i m t Service mà nó ñã ñư c b t ñ u v i l nh startService(). Ví d , m t Service nghe nh c ch ñ n n có th ñư c b t ñ u b ng cách g i l nh startService() cùng v i m t ñ i tư ng Intent mà ñ nh d ng ñư c âm nh c ñ chơi. Ch sau ñó, có th là khi ngư i s d ng mu n ki m soát trình chơi nh c ho c bi t thêm thông tin v bài hát hi n t i ñang chơi, thì s có m t Activity t o l p m t ñư ng truy n t i Service b ng cách g i bindService(). Trong trư ng h p như th này, stopService() s không th c s ng ng Service cho ñ n khi liên k t cu i cùng ñư c ñóng l i. Gi ng như m t Activity, m t Service cũng có các phương th c chu kỳ th i gian mà b n có th cài ñ t ñ ki m soát nh ng s thay ñ i trong tr ng thái c a nó. Nh ng nh ng phương th c c a www.Beenvn.com – T Sách Online
  2. Service thì ít hơn là c a Activity – ch có 3- và chúng thì ñư c s d ng r ng rãi, không ñư c b o v. void onCreate() void onStart(Intent intent) void onDestroy() B ng vi c th c hi n nh ng phương th c này, b n có th giám sát 2 vòng l p c a chu kỳ th i gian c a m i Service Entire lifetime c a m t Service di n ra gi a th i gian onCreate() ñư c g i ra và th i gian mà onDestroy() tr l i. Gi ng như m t Activity, m t Service l i ti t hành cài ñ t ban ñ u onCreate(), và gi i phóng tát c các tài nguyên còn l i onDestroy() Ví d , m t Service phát l i nh c có th t o ra m t lu ng và b t ñ u chơi nh c onCreate(),và sau ñó lu ng chơi nh c s d ng l i onCreate(), Active lifetime c a m t Service b t ñ u b ng m t l nh t i onStart(). ðâylà phương th c ñư c chuy n giao ñ i tư ng Intent mà ñã ñư c thông qua ñ t i startService() Service âm nh c s m ñ i tư ng Intent ñ quy t ñ nh xem s chơi lo i nh c nào và b t ñ u phát nh c. Không có callback tương ñương nào cho th i ñi m Service ng ng l i – không có phương th c onStop() Các phương th c onCreate() và onDestroy() ñư c g i cho t t c các Service dù chúng có ñư c b t ñ u b ng Context.startService() ho c Context.bindService() hay không. Tuy nhiên thì, onStart() ch ñư c g i ra ñ i v i các Service b t ñ u b ng startService(). N u m t Service cho phép nh ng Service khác k t n i v i nó thì s có thêm các phương th c callback dành cho Service ñó ñ th c hiên IBinder onBind(Intent intent) boolean onUnbind(Intent intent) void onRebind(Intent intent) Hàm callback onBind() thông qua ñ i tư ng Intent ñã ñ oc truy n ñ n bindService và onUnbind() ñư c chuy n giao ñ i tư ng mà ñã ñư c chuy n ñ n. N u Service ñang ñư c ch ñ nh (binding), onBind() quay tr l i kênh thông tin mà ngư i dùng s d ng ñ tương tác v i Service. Phương th c onUnbind() có th yêu c u onRebind() ñư c g i n u m t ngư i dùng k t n i v i Service Bi u ñ dư i ñây minh h a cho các phương th c callback giành cho m t Service. M c dù, nó phân tách các Service ñư c t o ra thông qua startService v i các Service mà ñư c t o ra b ng bindService(). Hãy nh r ng b t kì Service nào, cho dù nó ñư c kh i t o như th nào thì nó v n có th cho phép các ngư i dùng k t n i t i nó m t cách hi u qu nh t, cho nên b t kì Service nào cũng có th ñư c ch ñ nh thông qua các các phương th c onBind()và onUnbind() www.Beenvn.com – T Sách Online
  3. Service LifeCycle Các b n ñã ñ c và hi u v Service trong Part 1. Ti p theo mình s làm 1 demo nh ñ các b n hi u rõ hơn v Service. Demo t o 1 service chơi nh c và ngư i s d ng có th ñi u khi n service này. Giao di n chương trình : www.Beenvn.com – T Sách Online
  4. www.Beenvn.com – T Sách Online
  5. www.Beenvn.com – T Sách Online
  6. ð u tiên là t o 1 giao di n ñi u khi n service chơi nh c b ng layout ñơn gi n : Mã:
  7. android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/unbind_service"> T o 1 class LocalService.java extend t Service và m t l p con LocalBinder th a k t l p Binder ( dùng ñ ñi u khi n service ) Mã: public class LocalService extends Service { public class LocalBinder extends Binder { LocalService getService() { return LocalService.this; } } ..... } T ñó n p ch ng phương th c onBind b ng cách tr l i giá tr mBinder Mã: private final IBinder mBinder = new LocalBinder(); @Override public IBinder onBind(Intent intent) { return mBinder; } T o m t ñ i tư ng MediaPlayer chơi nh c ñơn gi n ( s d ng ñ chơi file abc.mp3 ñ t trong folder res/raw ): Mã: MediaPlayer mMediaPlayer; public void startMp3Player() { mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.abc); mMediaPlayer.start(); } public void mp3Stop() { mMediaPlayer.stop(); mMediaPlayer.release(); } l p LocalServiceBinding.java extend t l p Activity chúng ta ch c n ñ ý ñ n ñ i tư ng mConnection có nhi m v giám sát k t n i c a service chơi nh c. Mã: private ServiceConnection mConnection = new ServiceConnection() { www.Beenvn.com – T Sách Online
  8. public void onServiceConnected(ComponentName className, IBinder service) { mBoundService = ((LocalService.LocalBinder)service).getService(); Toast.makeText(LocalServiceBinding.this, R.string.local_service_connected, Toast.LENGTH_SHORT).show(); } public void onServiceDisconnected(ComponentName className) { mBoundService = null; Toast.makeText(LocalServiceBinding.this, R.string.local_service_disconnected, Toast.LENGTH_SHORT).show(); } }; Và x lý s ki n 3 button ( Bind, Unbin, Play/Stop ) Mã: private OnClickListener mBindListener = new OnClickListener() { public void onClick(View v) { bindService(new Intent(LocalServiceBinding.this, LocalService.class), mConnection, Context.BIND_AUTO_CREATE); mIsBound = true; mPlayButton.setEnabled(true); } }; private OnClickListener mPlayListener = new OnClickListener() { public void onClick(View v) { if(mPlayButton.getText() == "Play") { mBoundService.startMp3Player(); mPlayButton.setText("Stop"); } else { mBoundService.mp3Stop(); mPlayButton.setText("Play"); } } }; private OnClickListener mUnbindListener = new OnClickListener() { public void onClick(View v) { if (mIsBound) { unbindService(mConnection); mIsBound = false; mPlayButton.setEnabled(false); } } }; SourceCode : http://www.mediafire.com/?ymyyiynizlz P/S: Nh ñeo headphone khi ch y chương trình www.Beenvn.com – T Sách Online
  9. www.Beenvn.com – T Sách Online

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản