Một dịch vụ là một thành phần mà chạy trên nền tảng để thực hiện các hoạt động dài chạy mà không cần phải tương tác với người sử dụng và nó hoạt động ngay cả khi ứng dụng bị phá hủy.
Một dịch vụ có các phương thức gọi lại vòng đời mà bạn có thể thực hiện để theo dõi các thay đổi trong trạng thái của dịch vụ và bạn có thể thực hiện công việc ở giai đoạn thích hợp.
Để tạo một dịch vụ, bạn tạo một lớp Java mở rộng lớp cơ sở Dịch vụ hoặc một trong các lớp con hiện có của nó. Lớp cơ sở dịch vụ định nghĩa các phương thức gọi lại khác nhau và quan trọng nhất được đưa ra dưới đây. Bạn không cần phải thực hiện tất cả các phương thức gọi lại.
Tuy nhiên, Khóa học lập trình Android điều quan trọng là bạn phải hiểu từng người và thực hiện những điều đảm bảo ứng dụng của bạn hoạt động theo cách người dùng mong đợi.
Dịch vụ bộ xương sau đây cho thấy từng phương pháp của vòng đời
Ví dụ này sẽ đưa bạn qua các bước đơn giản để chỉ ra cách tạo Dịch vụ Android của riêng bạn. Thực hiện theo các bước sau để sửa đổi ứng dụng Khóa học lập trình Android mà chúng tôi đã tạo trong chương Ví dụ Hello World
Sau đây là nội dung của tệp hoạt động chính được sửa đổi MainActivity.java. Tập tin này có thể bao gồm từng phương pháp vòng đời cơ bản. Chúng tôi đã thêm các phương thức startService () và stopService () để bắt đầu và dừng dịch vụ.
Sau đây là nội dung của MyService.java . Tệp này có thể thực hiện một hoặc nhiều phương thức được liên kết với Dịch vụ dựa trên các yêu cầu. Hiện tại, chúng tôi sẽ chỉ triển khai hai phương thức onStartCommand () và onDestroy ()
Hãy thử chạy Hello World đã được sửa đổi của chúng tôi ! ứng dụng chúng tôi vừa sửa đổi. Tôi giả sử bạn đã tạo AVD của mình trong khi thực hiện thiết lập môi trường.
Để chạy ứng dụng từ studio Android, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ.
Khóa học lập trình Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng
Bây giờ để bắt đầu dịch vụ của bạn, hãy nhấp vào nút Bắt đầu dịch vụ , thao tác này sẽ khởi động dịch vụ và theo chương trình của chúng tôi theo phương thức onStartCommand () , một thông báo Dịch vụ bắt đầu sẽ xuất hiện ở dưới cùng của trình giả lập như sau
Để dừng dịch vụ, bạn có thể nhấp vào nút Dừng dịch vụ.
Một dịch vụ về cơ bản có thể có hai trạng thái
| Sr.Không. | Nhà nước & Mô tả |
|---|---|
| 1 | Bắt đầu Một dịch vụ được bắt đầu khi một thành phần ứng dụng, chẳng hạn như một hoạt động, khởi động nó bằng cách gọi startService () . Sau khi bắt đầu, một dịch vụ có thể chạy trong nền vô thời hạn, ngay cả khi thành phần khởi động nó bị phá hủy. |
| 2 | Giới hạn Một dịch vụ bị ràng buộc khi một thành phần ứng dụng liên kết với nó bằng cách gọi bindService () . Một dịch vụ ràng buộc cung cấp giao diện máy khách-máy chủ cho phép các thành phần tương tác với dịch vụ, gửi yêu cầu, nhận kết quả và thậm chí thực hiện trên các quy trình với giao tiếp giữa các quá trình (IPC). |
![]() |
| Khóa học lập trình Android |
Sơ đồ bên trái hiển thị vòng đời khi dịch vụ được tạo bằng startService () và sơ đồ bên phải hiển thị vòng đời khi dịch vụ được tạo bằng bindService (): (hình ảnh lịch sự: android.com)
Để tạo một dịch vụ, bạn tạo một lớp Java mở rộng lớp cơ sở Dịch vụ hoặc một trong các lớp con hiện có của nó. Lớp cơ sở dịch vụ định nghĩa các phương thức gọi lại khác nhau và quan trọng nhất được đưa ra dưới đây. Bạn không cần phải thực hiện tất cả các phương thức gọi lại.
Tuy nhiên, Khóa học lập trình Android điều quan trọng là bạn phải hiểu từng người và thực hiện những điều đảm bảo ứng dụng của bạn hoạt động theo cách người dùng mong đợi.
| Sr.Không. | Gọi lại & Mô tả |
|---|---|
| 1 | onStartCommand () Hệ thống gọi phương thức này khi một thành phần khác, chẳng hạn như một hoạt động, yêu cầu dịch vụ được bắt đầu, bằng cách gọi startService () . Nếu bạn thực hiện phương thức này, bạn có trách nhiệm dừng dịch vụ khi công việc của nó được thực hiện, bằng cách gọi các phương thức stopSelf () hoặc stopService () . |
| 2 | onBind () Hệ thống gọi phương thức này khi một thành phần khác muốn liên kết với dịch vụ bằng cách gọi bindService () . Nếu bạn thực hiện phương pháp này, bạn phải cung cấp giao diện mà khách hàng sử dụng để liên lạc với dịch vụ, bằng cách trả về một đối tượng IBinder . Bạn phải luôn thực hiện phương pháp này, nhưng nếu bạn không muốn cho phép ràng buộc, thì bạn nên trả về null . |
| 3 | onUnbind () Hệ thống gọi phương thức này khi tất cả các máy khách đã ngắt kết nối khỏi một giao diện cụ thể được dịch vụ xuất bản. |
| 4 | onRebind () Hệ thống gọi phương thức này khi các máy khách mới đã kết nối với dịch vụ, sau khi được thông báo trước đó rằng tất cả đã bị ngắt kết nối trong onUnbind (Ý định) của nó . |
| 5 | onCreate () Hệ thống gọi phương thức này khi dịch vụ được tạo lần đầu tiên bằng cách sử dụng onStartCommand () hoặc onBind () . Cuộc gọi này là bắt buộc để thực hiện thiết lập một lần. |
| 6 | trênDestroy () Hệ thống gọi phương thức này khi dịch vụ không còn được sử dụng và đang bị phá hủy. Dịch vụ của bạn nên thực hiện điều này để dọn sạch mọi tài nguyên như chủ đề, người nghe đã đăng ký, người nhận, v.v. |
Ví dụ này sẽ đưa bạn qua các bước đơn giản để chỉ ra cách tạo Dịch vụ Android của riêng bạn. Thực hiện theo các bước sau để sửa đổi ứng dụng Khóa học lập trình Android mà chúng tôi đã tạo trong chương Ví dụ Hello World
| Bậc thang | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng Android StudioIDE để tạo một ứng dụng Android và đặt tên là Ứng dụng của tôi theo góicom.example.tutorialspoint7.myapplication như được giải thích trongchương Ví dụ Hello World . |
| 2 | Sửa đổi tệp hoạt động chính MainActivity.java để thêm các phương thứcstartService () và stopService () . |
| 3 | Tạo một tệp java mới MyService.java trong gói com.example.My Application . Tập tin này sẽ có triển khai các phương pháp liên quan đến dịch vụ Android. |
| 4 | Xác định dịch vụ của bạn trong tệp AndroidManifest.xml bằng cách sử dụng thẻ <service ... />. Một ứng dụng có thể có một hoặc nhiều dịch vụ mà không có bất kỳ hạn chế nào. |
| 5 | Sửa đổi nội dung mặc định của tệp res / layout / Activity_main.xml để bao gồm hai nút trong bố cục tuyến tính. |
| 6 | Không cần thay đổi bất kỳ hằng số nào trong tệp res / value / chuỗi.xml .Studio Android chăm sóc các giá trị chuỗi |
| 7 | Chạy ứng dụng để khởi chạy trình giả lập Android và xác minh kết quả của những thay đổi được thực hiện trong ứng dụng. |
Sau đây là nội dung của MyService.java . Tệp này có thể thực hiện một hoặc nhiều phương thức được liên kết với Dịch vụ dựa trên các yêu cầu. Hiện tại, chúng tôi sẽ chỉ triển khai hai phương thức onStartCommand () và onDestroy ()
package com.example.tutorialspoint7.myapplication; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.support.annotation.Nullable; import android.widget.Toast; /** * Created by TutorialsPoint7 on 8/23/2016. */ public class MyService extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { // Let it continue running until it is stopped. Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); return START_STICKY; } @Override public void onDestroy() { super.onDestroy(); Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show(); } }Sau đây sẽ là nội dung được sửa đổi của tệp AndroidManifest.xml . Ở đây chúng tôi đã thêm thẻ <service ... /> để bao gồm dịch vụ của chúng tôi
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.tutorialspoint7.myapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyService" /> </application> </manifest>Sau đây sẽ là nội dung của tệp res / layout / Activity_main.xml để bao gồm hai nút
Hãy thử chạy Hello World đã được sửa đổi của chúng tôi ! ứng dụng chúng tôi vừa sửa đổi. Tôi giả sử bạn đã tạo AVD của mình trong khi thực hiện thiết lập môi trường.
Để chạy ứng dụng từ studio Android, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào biểu tượng Chạy từ thanh công cụ.
Khóa học lập trình Android Studio cài đặt ứng dụng trên AVD của bạn và khởi động nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị theo cửa sổ Trình mô phỏng
Bây giờ để bắt đầu dịch vụ của bạn, hãy nhấp vào nút Bắt đầu dịch vụ , thao tác này sẽ khởi động dịch vụ và theo chương trình của chúng tôi theo phương thức onStartCommand () , một thông báo Dịch vụ bắt đầu sẽ xuất hiện ở dưới cùng của trình giả lập như sau
Để dừng dịch vụ, bạn có thể nhấp vào nút Dừng dịch vụ.

Không có nhận xét nào:
Đăng nhận xét