SỬ DỤNG INTENT TRONG ANDROID

     

Khi các bạn phải kết nối các thành phần ứng dụng apk thì đông đảo phải thực hiện Intent. Vậy Intent là gì? sứ mệnh và giải pháp sử dụng ra làm sao trong vận dụng Android.

Bạn đang xem: Sử dụng intent trong android

Bài viết này mình hướng dẫn chúng ta tìm hiểu thực chất cũng như cách sử dụng Intent trong game android để có thể gửi tài liệu giữa những thành phần( Activity, Service…)

Trước đó bạn cũng có thể nên xem thêm bài viết về vòng đời activity cùng service trong Android mà tôi đã viết nhé.

Trước khi vào nội dung bài viết mình bỗng nhiên nghĩ đến ví dụ: Con fan làm bất cứ việc gì đều phải sở hữu mục đích cả. Tự xem TV, tải sắm, lập trình áp dụng … đều phải có một số mục đích đằng sau nó.

Android chuyển động theo biện pháp tương tự. Trước khi một ứng dụng có thể thực hiện nay một hành vi nào đó(Thuật ngữ gọi là action), nó cần biết trước mục đích của các hành vi đó, để hoàn toàn có thể thực hiện những action đó đúng cách.

Hóa ra, con fan và app android cũng không khác biệt chút nào, đúng không nào ^_^Sau nội dung bài viết này, chúng ta sẽ biết được:

Intent là gì với vai trò của Intent vào Android như vậy nào?Có từng nào loại intent?Sử dụng Intent nhằm gửi dữ liệu giữa các ActivitySử dụng Parcelable và Serializable nhằm Intent rất có thể truyền được dữ liệu là những đối tượng(Object)

Chúng ta bắt đầu nhé!

*


Nội dung bao gồm của bài viết

#2. Phân một số loại Intent#4. Truyền dữ liệu giữa những Activity bằng Intent#5. Truyền dữ liệu là đối tượng bằng intent áp dụng Parcelable và Serializable Data

#1. Intent là gì? mục đích của Intent vào Android như vậy nào?

Intent là 1 khái niệm khá trừu tượng về công việc, tác dụng có thể được triển khai bởi vận dụng của bạn. Intent rất có thể được dùng làm kết nối những thành phần trong vận dụng Android. Trong quá trình kết nối, nó cũng rất có thể yêu mong thành phần đó thực hiện một tác vụ được định trước. Những thành phần cơ bạn dạng của một Intent:

Actions: Là số đông thứ cơ mà Intent nên thực thi, ví dụ như quay số năng lượng điện thoại, mở URL hoặc chỉnh sửa dữ liệu. Một action dễ dàng và đơn giản là một String biểu đạt cho tác vụ đề nghị thực hiện. Ví dụ: ACTION_VIEW, ACTION_EDIT, ACTION_MAIN…Data: Đây chính là dữ liệu để intent hoạt động. Nó được biểu diễn dưới dạng Uniform Resource Identifier(Uri) – một kiểu dáng định danh cho một tài nguyên thay thể. Thứ hạng của Data yêu cầu (nếu có) tùy nằm trong vào action. Ví dụ: các bạn sẽ không muốn tạo một dial number Intent mà lại lấy số điện thoại cảm ứng từ một hình ảnh đúng không?

Khả năng kết hợp các kích hoạt và data này chất nhận được Android biết chính xác intent đang yêu thương cầu gì với những đối tượng người tiêu dùng nào rất có thể thực hiện nó. Đơn giản như vậy!

Intents rất có thể được áp dụng để:

Mở một Activity new và truyền tài liệu cho Activity đóMở một Fragments
 / giao tiếp giữa các Fragments.Mở hoặc dừng một Service

♥ hoàn toàn có thể bạn phải đến cách thêm Fragment vào Activity

#2. Phân nhiều loại Intent

Có hai loại Intents

Explicit Intent – Intent dạng tường minh

Intent tường mình có nghĩa là khi tạo một đối tượng Intent, bọn họ chỉ định rõ với truyền thẳng tên yếu tố đích vào intent. Ví dụ: như đoạn code bên dưới, intent được chỉ định và hướng dẫn rõ OtherActivity đã là thành phần dìm và xử trí intent này.

val intent = Intent(this, OtherActivity::class.java)startActivity(intent)

*

Implicit Intent – Intent không tường minh

Thay bởi trong intent app android được chỉ định và hướng dẫn sẵn một Activity nào đó thực hiện, thì đã chỉ truyền vào action và gửi mang đến Android. Game android sẽ dựa vào action này mà lọc những thành phần nào sẽ đăng kí kích hoạt đó hotline ra.

Vì vậy, apk có thể auto kích hoạt yếu tắc từ thuộc một ứng dụng hoặc một số ứng dụng không giống để cách xử lý intent đó.

Ví dụ, họ cần cần hiển thị một địa chỉ lên bản đồ. Cầm vì chúng ta phải mã hóa với viết hẳn module bạn dạng đồ để hiển thị thì rất có thể gửi địa chỉ đó vào intent, rồi android sẽ tự tìm kiếm xem có áp dụng nào phù hợp( như Google map chẳng hạn) để hiển thị nó.

*

Thông thường, bọn họ dùng các intent tường minh nhằm kích hoạt các thành phần trong ứng dụng, còn intent ko tường minh nhằm chạy những thành phần của vận dụng bên thiết bị 3.

Xem thêm: Công Thức Tính Diện Tích Hình Trụ Tròn Xoay Là Gì ? Cách Tính Kèm Ví Dụ Minh Họa

Đây là 1 trong những đoạn code minh họa cho intent không tường minh( sử dụng ACTION_VIEWđể gọi vận dụng nào rất có thể hiển thị được link)

class ImplicitIntentActivity : AppCompatActivity() override fun onCreate(savedInstanceState: Bundle?) super.onCreate(savedInstanceState) setContentView(R.layout.activity_implicit_intent) fun showWebPage(view: View) val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.ebookfrenzy.com")) startActivity(intent) Kết quả vẫn như bên dưới

*

#3. Intent Flags

Flags y như các tùy chọn(option) mang lại intent trong android. Bạn có thể sử dụng các flags này để thông số kỹ thuật intent, những flags này giúp app android “hành xử” với intent đúng ý vật của thiết kế viên.

Ví dụ: mặc định khi áp dụng intent để gọi Activity thì activity đó sẽ được đưa vào stack. Và khi người dùng nhấn nút back trên smartphone thì app android sẽ gọi những activity được lưu giữ trong stack lên.

Để ngăn ngừa điêu này, bạn có thể dùng flag:FLAG_ACTIVITY_SINGLE_TOP. Nếu để flag này, thì intent sẽ không thể điện thoại tư vấn activity giả dụ activity đó đã ở vị trí cao nhất của stack

intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOPTương tự , sử dụng flag: FLAT_ACTIVITY_CLEAR_TOPsẽ xóa tất cả các activity khác trong stack cùng đặt activity được gọi lên top của stack.

Có không hề ít flag bổ ích cho ứng dụng, các bạn có thể bài viết liên quan ở đây

#4. Truyền dữ liệu giữa những Activity bởi Intent

Để truyền tài liệu sang mang lại activity mới họ sử dụng các cặp key-value vào hàm putExtra, putStringArrayListExtra.

putExtra chỉ truyền được dữ liệu kiểu cơ bản: Int, Float, Char, Double, Boolean, String

*

Ví dụ:

val intent = Intent(this, OtherActivity::class.java)intent.putExtra("keyString", "Androidly String data")Sau đó những giá trị vào Extras được đóng gói vào Bundle trước khi nó được gởi đi.

Truy xuất dữ liệu trong một Activity mới

val bundle: Bundle? = intent.extrasval string: String? = intent.getString("keyString")val myArray: ArrayList? = intent.getStringArrayList("myArray")Intent, extras khớp ứng với getIntent(), getExtras()nếu viết bằng Java.Chúng ta vừa cần sử dụng toán tử nullable Bundle? để phòng trường phù hợp bị NullPointerExceptions khi không có dữ liệu.

Tương tự, khi mang giá trị thông qua các Key, họ dùng loại nullable để phòng dự phòng NPE hoàn toàn có thể xảy ra lúc key không thiết yếu xác

#5. Truyền dữ liệu là đối tượng người dùng bằng intent áp dụng Parcelable cùng Serializable Data

Như mình đã nói trên thì với các truyền dữ liệu thông thường qua hàm putExtra(), đang chỉ truyền được những loại dữ liệu cơ bản, cấp thiết truyền được tài liệu kiểu object.

Để hạn chế và khắc phục điều này, họ implement interface Parcelable hoặc Serializable.

Xem thêm: Kịch Bản Lời Dẫn Chương Trình Trung Thu Hay, Chi Tiết, Please Wait

Điểm khác nhau giữ Parcelable và Serializable

Parcelable Interface là 1 phần của game android SDK. Còn Serializable là một trong những interface tiêu chuẩn của Java.Trong Parcelable bạn phải đặt toàn bộ dữ liệu mà bạn phải truyền vào đối tượng người tiêu dùng Parcel và override lại phương thức writeToParcel(). Trong serializable chỉ việc implement interface là đủ nhằm truyền dữ liệu.Parcelable được reviews là cấp tốc hơn Serializable.

Cách áp dụng Parcelable

Kotlin đưa ra một vài annotations khôn xiết tiện để lưu chúng từ các việc override phương thức writeToParcel()để đưa tài liệu vào Parcelable. Cố gắng vào đó, chúng ta cũng có thể dùng annotations