Hướng dẫn lập trình cơ bản với Android - Bài 5
lượt xem 106
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Hướng dẫn lập trình cơ bản với Android - Bài 5
- 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
- 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
- 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
- www.Beenvn.com – T Sách Online
- www.Beenvn.com – T Sách Online
- ð 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ã:
- 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
- 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
- www.Beenvn.com – T Sách Online
CÓ THỂ BẠN MUỐN DOWNLOAD
-
HƯỚNG DẪN LẬP TRÌNH CƠ BẢN ANDROID (TIẾNG VIỆT)
121 p | 1039 | 355
-
Hướng dẫn lập trình cơ bản với Android
121 p | 586 | 277
-
Hướng dẫn lập trình cơ bản và nâng cao với Android 1
5 p | 879 | 264
-
Hướng dẫn lập trình với Android 8
5 p | 351 | 180
-
Hướng dẫn lập trình cơ bản với Android - Bài 1
12 p | 336 | 135
-
Hướng dẫn lập trình cơ bản và nâng cao với Android 4
5 p | 251 | 113
-
Hướng dẫn lập trình với Android
145 p | 357 | 105
-
Hướng dẫn lập trình cơ bản và nâng cao với Android 18
6 p | 246 | 105
-
Hướng dẫn lập trình cơ bản và nâng cao với Android 10
5 p | 194 | 99
-
Hướng dẫn lập trình cơ bản và nâng cao với Android 16
7 p | 204 | 88
-
Hướng dẫn lập trình cơ bản và nâng cao với Android 21
5 p | 176 | 85
-
Hướng dẫn lập trình cơ bản với Android - Phần 2: Android Virtual Device
5 p | 206 | 24
-
Hướng dẫn lập trình cơ bản với Android - Phần 3: Device của Android
5 p | 119 | 14
-
Giáo trình hướng dẫn lập trình cơ bản với hệ điều hành mở Androi 3.1 p1
5 p | 105 | 13
-
Hướng dẫn lập trình cơ bản với Android - Phần 1: Cách sử dụng Android trong Eclipse
5 p | 105 | 9
-
Giáo trình hướng dẫn lập trình cơ bản với hệ điều hành mở Androi 3.1 p8
5 p | 113 | 8
-
Hướng dẫn lập trình cơ bản với Android - Phần 4: Android Activity Life Cycle
5 p | 56 | 5
-
Hướng dẫn lập trình cơ bản với Android - Phần 6: Bài tập thực hành
5 p | 64 | 5
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn