Hướng dẫn sử dụng dịch vụ Android: Làm thế nào để chạy ứng dụng trong nền?



Hướng dẫn sử dụng dịch vụ Android này giúp bạn hiểu cách thực hiện các thao tác trên nền như phát nhạc, Nó không có bất kỳ giao diện người dùng nào được đính kèm

Thường sử dụng nhiều ứng dụng trên điện thoại thông minh, bạn có thể muốn chuyển từ ứng dụng này sang ứng dụng khác nhưng cũng phải đảm bảo rằng tất cả các ứng dụng của bạn vẫn hoạt động trong nền. Đây không là gì ngoài các dịch vụ được cung cấp bởi . Vì vậy, bài viết này về Hướng dẫn dịch vụ Android sẽ giúp bạn hiểu cách làm việc với Dịch vụ.

Tôi sẽ đề cập đến các chủ đề sau:





Dịch vụ Android là gì?

Dịch vụ về cơ bản là một quá trình. Dịch vụ Android là một thành phần chạy ở chế độ nền để thực hiệncác hoạt động kéo dài mà không tương tác với người dùng và nó hoạt động ngay cả khi ứng dụng bị phá hủy.Một thành phần ứng dụng khác có thể khởi động một dịch vụ và nó tiếp tục chạy trong nền ngay cả khi bạn chuyển sang một ứng dụng khác.

Ngoài ra, một thành phần có thể tự liên kết với một dịch vụ để tương tác với nó và cũng thực hiện giao tiếp giữa các quá trình.



Ghi chú: Android.app.Service là một lớp con của lớp ContextWrapper và dịch vụ Android không phải là một luồng hoặc một quy trình riêng biệt.

Android- Vòng đời dịch vụ

Vòng đời của Dịch vụ Android có thể có hai dạng dịch vụ. Vòng đời của một dịch vụ tuân theo hai con đường khác nhau, đó là:

làm thế nào để trở thành một kỹ sư ai
  1. Đã bắt đầu
  2. Ràng buộc

Đã bắt đầu



Một dịch vụ được bắt đầu khi một thành phần ứng dụng gọi startService () phương pháp. 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 chịu trách nhiệm khởi động bị phá hủy. Nó được dừng lại bằng cách sử dụng dừng phục vụ () phương pháp. Dịch vụ cũng có thể tự dừng bằng cách gọi stopSelf () phương pháp.

Ràng buộc

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 () . Dịch vụ liên kết 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 và nhận kết quả. Nó xử lý thông qua giao tiếp giữa các quá trình (IPC). Khách hàng có thể hủy liên kết dịch vụ bằng cách gọi unbindService () phương pháp.

Vòng đời dịch vụ Android- Hướng dẫn dịch vụ Android- Edureka

Chuyển sang phần tiếp theo của bài viết này về Dịch vụ Android, hãy thảo luận về cáccác phương thức dưới lớp dịch vụ.

Hướng dẫn dịch vụ Android: Phương pháp

Có một số phương pháp sử dụng mà bạn có thể dễ dàng thực hiện các thao tác trên bất kỳ ứng dụng nào. Một số trong số đó là:

phương phápSự miêu tả
onStartCommand ()

Phương thức này được gọi khi bất kỳ thành phần nào khác, chẳng hạn như một hoạt động, yêu cầu dịch vụ được khởi động, bằng cách gọi startService () .

Bạn có trách nhiệm dừng dịch vụ khi công việc tương ứng được thực hiện bằng cách sử dụng stopSelf () hoặc là dừng phục vụ () các phương pháp.

unbind ()

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 () .

Để thực hiện điều này, bạn phải cung cấp giao diện mà khách hàng sử dụng để giao tiếp với dịch vụ. Nó trả về một IBinder vật. Nếu bạn không muốn cho phép ràng buộc, hãy quay lại vô giá trị .

onUnbind ()

Hệ thống gọi phương thức này khi tất cả các máy khách bị ngắt kết nối khỏi một giao diện cụ thể do dịch vụ xuất bản.

onRebind ()

Gọi phương thức này khi khách hàng mới được kết nối với dịch vụ sau khi nó đã được thông báo trước đó rằng tất cả đều bị ngắt kết nối trong onUnbind (Ý định) .

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 là unbind () . Nó được yêu cầu thực hiện thiết lập một lần.

onDestroy ()

Phương thức này được gọi khi dịch vụ không còn được sử dụng và đang bị hủy. Dịch vụ của bạn nên triển khai điều này để xóa mọi tài nguyên như luồng, trình nghe đã đăng ký, máy thu, v.v.

làm thế nào để thực hiện quyền lực trong python

Mã bộ xương

public class MainActivity mở rộng Activity {private TextView textView private BroadcastReceiver receiver = new BroadcastReceiver () {@Override public void onReceive (Bối cảnh ngữ cảnh, Ý định) {Bundle pack = Ý định.getExtras () if (pack! = null) {String string = bó.getString (DownloadService.FILEPATH) int resultCode = pack.getInt (DownloadService.RESULT) if (resultCode == RESULT_OK) {Toast.makeText (MainActivity.this, 'Tải xuống hoàn tất. Tải xuống URI:' + string, Toast.LENGTH_LONG) .show () textView.setText ('Tải xuống xong')} else {Toast.makeText (MainActivity.this, 'Tải xuống không thành công', Toast.LENGTH_LONG) .show () textView.setText ('Tải xuống không thành công')}}}} @Override public void onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) textView = (TextView) findViewById (R.id.status)} @Override protected void onResume () {super.onResume ( ) registerReceiver (receiver, IntentFilter mới (DownloadService.NOTIFICATION))} @Override protected void onPause () {super.onPause () unregisterReceiver (receiver)} public void onClick (View view) {Intent Ý = new Intent (this, DownloadService.class) // thêm thông tin cho dịch vụ tải tệp nào và ở đâu lưu trữ ý định.putExtra (DownloadService.FILENAME, 'index.html') Ý định.putExtra (DownloadService.URL, 'www.edureka.co') startService (ý định) textView.setText ('Dịch vụ bắt đầu')}}

Trong ví dụ này, bạn có thể thấy các phương pháp như onCreate () , onResume () , onPause () . Các phương pháp này tạo nên cấu trúc của Dịch vụ trong Android.

Bây giờ, đến phần thực tế của Hướng dẫn dịch vụ Android này, hãy cùng xemcách tạo một dịch vụ và xử lý nó.

Bản giới thiệu

Hãy xem cách phát nhạc trong nền. Để làm được điều đó, tôi sẽ sử dụng Andriod Studio .

Bước 1

Tạo một dự án trống mới. Đặt tên cho dự án của bạn và nhấp vào thư mục Java và nhấp vào Hoạt động chính . Đầu tiên, hãy thêm Media Player để bạn có thể nhập chi tiết trình phát như bắt đầu, đặt vòng lặp, v.v.

package com.example.mydemoapplication import androidx.appcompat.app.AppCompatActivity public class MainActivity mở rộng AppCompatActivity {@Override được bảo vệ void onCreate (Gói đã lưuInstanceState) {super.onCreate (saveInstanceState) setContentView (R.layout.activity_main) MediaPlayer player = MediaPlayer.create (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()}}

Lưu ý: Nếu bạn đang sử dụng nó lần đầu tiên, đừng quên bật BIOS. Bạn có thể thực hiện việc này bằng cách khởi động lại hệ thống của mình.

Bạn sẽ phải thêm một thiết bị ảo. Chỉ cần nhấp vào Mở trình quản lý AVD.

Chọn một thiết bị bạn chọn và bạn đã sẵn sàng sử dụng!

Điều này sẽ chỉ chạy khi màn hình đang hoạt động nhưng để làm cho ứng dụng này hoạt động ngay cả trong nền, bạn cần thêm một vài dòng mã nữa trong activity_main.xml tập tin.

Bước 2

Sau khi chạy mã tương ứng, bạn sẽ có thể chạy ứng dụng và có thể phát nhạc trên nền, tức là nếu bất kỳ ứng dụng nào khác được mở, âm thanh này sẽ vẫn phát.

Hãy xem cách này có thể được thực hiện.

chuỗi con trong java là gì
  • Tạo một lớp khác trong thư mục Java và đặt tên cho nó. Ở đây, tôi đã gọi nó là “ MyService '.
  • Lớp này mở rộng lớp Dịch vụ.
  • Khi bạn có các phương thức của lớp Dịch vụ, hãy triển khai các phương thức bằng cách nhấp vào alt + Enter.
  • Sau đó, bạn phải ghi đè các phương thức. Vì vậy, nhấp chuột phải vào cửa sổ để có các tùy chọn.
  • Tạo các phương pháp ghi đè, chọn onStartCommand ()OnDestroy ().
  • Chỉnh sửa onStartCommand () bằng cách thêm mã sau:
MediaPlayer player = MediaPlayer.create (this, Settings.System.DEFAULT_ALARM_ALERT_URI) player.setLooping (true) player.start ()

Ghi chú: Xóa mã này trong Hoạt động chính.

  • Thao tác này sẽ xuất hiện lỗi yêu cầu bạn xóa câu lệnh. Vì vậy, hãy xóa câu lệnh return và khai báo MediaPlayer như một phương thức riêng tư và trả về START_STICKY . Điều này sẽ trả về trạng thái bắt đầu.
  • Thêm vào player.stop () bên trong onDestroy () phương pháp.

Bước 3

Đi đến thịt bò và đi tới bố cục, nhấp vào android_main.xml để lấy tệp XML của ứng dụng.

  • Loại bỏ TextView và thay thế nó bằng LinearLayout và thêm Buttons. Thêm mã tương ứng.
<LinearLayout android:sự định hướng= 'dọc' android: layout_width= 'match_parent' android: layout_height= 'wrap_content' android: layout_centerVertical= 'true' công cụ:Làm lơ= 'ThiếuConstraints'><Cái nút android:Tôi= '@ + id / buttonStart' android:bản văn= 'Bắt ​​đầu dịch vụ' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/><Cái nút android:Tôi= '@ + id / buttonStop' android:bản văn= 'Dừng dịch vụ' android: layout_width= 'wrap_content' android: layout_height= 'match_parent'/>LinearLayout>
  • Sau khi bạn làm điều này, hãy quay lại Hoạt động chính và thêm mã tương ứng để liên kết tệp XML và MyServiceClass.
package com.example.newproject import androidx.appcompat.app.AppCompatActivity public class MainActivity mở rộng AppCompatActivity triển khai View.OnClickListener {private Nút bắt đầu, dừng @Override được bảo vệ void onCreate (Gói đã lưuInstanceState) {super.onCreate (saveInstanceState) setoutout .activity_main) start = (Nút) findViewById (R.id.buttonStart) stop = (Nút) findViewById (R.id.buttonStop) start.setOnClickListener (this) stop.setOnClickListener (this)} @Override public void onClick (View view ) {if (view == start) {startService (new Intent (this, MyServiceClass.class))} else if (view == stop) {stopService (new Intent (this, MyServiceClass.class))}}}

Bước 4

Khi bạn đã hoàn tất việc liên kết các lớp, hãy chạy mã.

Lưu ý: Thêm tên lớp Dịch vụ trong tệp AndroidManifiest.xml.

Tiếp theo, hãy chạy mã.

Khi bạn khởi động dịch vụ, nó sẽ chạy trên nền ngay cả khi một ứng dụng khác được mở. Bạn có thể bắt đầu hoặc dừng dịch vụ bằng cách nhấp vào các nút.

Đây là một bản demo đơn giản mà bạn đã học cách làm việc với các Dịch vụ Android.

Vì vậy, với điều này, chúng ta sẽ đi đến phần cuối của bài viết này về 'Hướng dẫn dịch vụ Android'.Tôi hy vọng bạn rõ ràng với các chủ đề được đề cập trong blog này.

Bây giờ bạn đã xem qua blog Hướng dẫn các dịch vụ Android của chúng tôi, bạn có thể xem Edureka’s để bắt đầu nhanh việc học của bạn.

Có bất kỳ câu hỏi? Đừng quên đề cập đến họ trong các nhận xét của blog “Hướng dẫn sử dụng dịch vụ Android” này. Chúng tôi sẽ lấy lại cho bạn.