SỬ DỤNG INTENT TRONG ANDROID

Khi các bạn cần phải kết nối các thành phần ứng dụng android thì những phải áp dụng Intent. Vậy Intent là gì? sứ mệnh và cách sử dụng thế nào trong vận dụng Android.Bạn đang xem: Intent trong apk là gì

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

Trước đó bạn cũng có thể nên bài viết liên quan bài viết về vòng đời activityservice trong Android mà mình đã viết nhé.

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

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

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

Hóa ra, con bạn và game android cũng không biệt lập chút nào, đúng không nào ^_^Sau nội dung bài viết này, họ sẽ biết được:

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

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


*

Nội dung chủ yếu của bài bác viết

#2. Phân các loại Intent#4. Truyền dữ liệu giữa những Activity bằng Intent#5. Truyền tài liệu là đối tượng người dùng bằng intent thực hiện Parcelable và Serializable Data

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

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

Actions: Là số đông thứ nhưng mà Intent phải thực thi, chẳng hạn 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 đơn giản và dễ dàng là một String trình bày cho tác vụ phải 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 màn trình diễn dưới dạng Uniform Resource Identifier(Uri) – một dạng hình định danh cho một tài nguyên rứa thể. Hình trạng của Data yêu ước (nếu có) tùy thuộc vào action. Ví dụ: bạn sẽ không ước ao tạo một dial number Intent mà lại lấy số điện thoại thông minh từ một hình hình ảnh đúng không?

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

Intents có thể được sử dụng để:

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

♥ có thể bạn cần đến cách thêm Fragment vào Activity

#2. Phân một số 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 sản xuất một đối tượng người tiêu dùng Intent, bọn họ chỉ định rõ và truyền trực tiếp tên thành phần đích vào intent. Ví dụ: như đoạn code mặt dưới, intent được chỉ định và hướng dẫn rõ OtherActivity đang là thành phần dấn và giải pháp xử lý intent này.

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

*

Implicit Intent – Intent ko tường minh

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

Vì vậy, app android có thể auto kích hoạt thành phần từ cùng một ứng dụng hoặc một trong những ứng dụng khác để giải pháp xử lý intent đó.

Ví dụ, bọn họ cần đề xuất hiển thị một vị trí lên bạn dạng đồ. Núm vì bọn họ phải mã hóa và viết hẳn module bạn dạng đồ để hiển thị thì hoàn toàn có thể gửi vị trí đó vào intent, rồi android sẽ tự tra cứu xem có áp dụng nào phù hợp( như Google bản đồ chẳng hạn) nhằm hiển thị nó.


*

Đây là 1 đoạn code minh họa cho intent ko tường minh( sử dụng ACTION_VIEWđể gọi ứng dụng nào 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ả đã như bên dưới


*

#3. Intent Flags

Flags y như các tùy chọn(option) đến intent trong android. Bạn cũng có thể sử dụng những flags này để cấu hình intent, những flags này giúp apk “hành xử” với intent đúng ý đồ của lập trình sẵn viên.

Xem thêm: Cách Kết Nối Máy Chiếu Win 10, Cách Kết Nối Máy Chiếu Với Laptop Windows 10

Ví dụ: mang định khi thực hiện intent để hotline Activity thì activity đó sẽ tiến hành đưa vào stack. Với khi người tiêu dùng nhấn nút back trên điện thoại thì app android sẽ gọi các activity được lưu trong stack lên.

Để ngăn ngừa điêu này, bạn cũng có thể dùng flag:FLAG_ACTIVITY_SINGLE_TOP. Nếu để flag này, thì intent sẽ không còn thể hotline activity trường hợp activity đó đang ở đứng top của stack

intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOPTương từ , thực hiện flag: FLAT_ACTIVITY_CLEAR_TOPsẽ xóa toàn bộ các activity khác trong stack cùng đặt activity được gọi lên top của stack.

Có tương đối nhiều flag bổ ích cho ứng dụng, chúng ta có thể đọc thêm ở đây

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

Để truyền dữ liệu sang cho activity mới chúng ta sử dụng các cặp key-value trong 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ị trong Extras được đóng gói vào Bundle trước lúc nó được nhờ cất hộ đi.

Truy xuất tài 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 dùng toán tử nullable Bundle? để phòng trường phù hợp bị NullPointerExceptions khi không tồn tại dữ liệu.

Tương tự, khi rước giá trị trải qua các Key, họ dùng giao diện nullable nhằm phòng phòng ngừa NPE có thể xảy ra lúc key không chủ yếu xác

#5. Truyền dữ liệu là đối tượng bằng intent thực hiện Parcelable với Serializable Data

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

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

Điểm không giống nhau giữ Parcelable với Serializable

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

Cách áp dụng Parcelable

Kotlin đưa ra một vài annotations cực kỳ tiện để lưu chúng từ việc override phương thức writeToParcel()để đưa dữ liệu vào Parcelable. Vậy vào đó, chúng ta có thể dùng annotations