Ý định trong Android là gì?


347
  • Là những gì một Ý định trong Android?
  • Ai đó có thể xây dựng với một ví dụ?
  • Các loại ý định là gì và tại sao chúng ta đang sử dụng chúng?
  • Tại sao Ý định rất quan trọng trong Android?

Giống như Windows là hệ điều hành dựa trên thông báo và thông báo cho người dùng nhập chương trình để gửi tin nhắn cho họ, android sử dụng ý định để làm điều đó!
AminM

Câu trả lời:


486

Một ý định là một "ý định" để thực hiện một hành động; nói cách khác,

một đối tượng nhắn tin bạn có thể sử dụng để yêu cầu một hành động từ một thành phần ứng dụng khác

Một ý định về cơ bản là một thông điệp để nói rằng bạn đã làm hoặc muốn điều gì đó xảy ra. Tùy thuộc vào ý định, các ứng dụng hoặc HĐH có thể đang lắng nghe và sẽ phản ứng tương ứng. Hãy nghĩ về nó như một email nổ cho một nhóm bạn, trong đó bạn bảo bạn John của mình làm gì đó hoặc cho những người bạn có thể làm X ( "bộ lọc ý định" ), để làm X. Những người khác sẽ bỏ qua email, nhưng John (hoặc những người bạn có thể làm X) sẽ phản ứng với nó.

Để nghe ý định phát sóng (như tiếng chuông điện thoại hoặc tin nhắn SMS được nhận), bạn thực hiện một máy thu quảng bá , sẽ được thông qua ý định đó. Để tuyên bố rằng bạn có thể xử lý mục đích ứng dụng của người khác như "chụp ảnh", bạn khai báo bộ lọc ý định trong tệp kê khai của ứng dụng .

Nếu bạn muốn thực hiện một ý định để làm một cái gì đó, như bật lên trình quay số, bạn sẽ thực hiện một ý định nói rằng bạn sẽ làm.


1
@Chirag Raval Sự khác biệt giữa người nghe có ý định và hành động là gì?
mayooran

1
Xin vui lòng giải thích lại câu cuối cùng? Nếu bạn muốn bắn ra ..
Shafizadeh

1
Tương tự với đại biểu C #?
Paul

Thực tế một hành động có nghĩa là bạn có thể bắt đầu một thành phần từ một thành phần khác bằng cách sử dụng một Ý định. Đó là những gì nó chủ yếu được sử dụng cho.
Saletanth Karumanaghat

Ngoài ra để thêm vào điều này ... Ý định là không đồng bộ.
Saletanth Karumanaghat

165

Ý định là gì?

Một ý định về cơ bản là một thông điệp được truyền giữa các thành phần (như Hoạt động , Dịch vụ, Người nhận Phát sóngNhà cung cấp Nội dung ). Vì vậy, nó gần như tương đương với các tham số được truyền cho các lệnh gọi API. Sự khác biệt cơ bản giữa các lệnh gọi API và gọi các thành phần thông qua ý định là:

  • Các lệnh gọi API là đồng bộ trong khi các yêu cầu dựa trên mục đích là không đồng bộ.
  • Các lệnh gọi API là ràng buộc thời gian biên dịch trong khi các cuộc gọi dựa trên mục đích là ràng buộc thời gian chạy.

Tất nhiên, Ý định có thể được thực hiện để hoạt động chính xác như các lệnh gọi API bằng cách sử dụng cái được gọi là ý định rõ ràng, sẽ được giải thích sau. Nhưng thường xuyên hơn không, ý định ngầm là con đường để đi và đó là những gì được giải thích ở đây.

Một thành phần muốn gọi người khác chỉ phải thể hiện ý định thực hiện một công việc. Và bất kỳ thành phần nào khác tồn tại và tuyên bố rằng nó có thể thực hiện công việc đó thông qua các bộ lọc ý định , được nền tảng Android gọi để thực hiện công việc. Điều này có nghĩa, không thành phần nào nhận thức được sự tồn tại của nhau nhưng vẫn có thể hoạt động cùng nhau để mang lại kết quả mong muốn cho người dùng cuối.

Kết nối vô hình này giữa các thành phần đạt được thông qua sự kết hợp giữa ý định, bộ lọc ý định và nền tảng Android.

Điều này dẫn đến những khả năng lớn như:

  • Trộn và kết hợp hoặc thay vì cắm và chơi các thành phần trong thời gian chạy.
  • Thay thế các ứng dụng Android sẵn có bằng các ứng dụng được phát triển tùy chỉnh.
  • Cấp độ thành phần tái sử dụng trong và trên các ứng dụng.
  • Định hướng dịch vụ đến mức chi tiết nhất, nếu tôi có thể nói.

Dưới đây là các chi tiết kỹ thuật bổ sung về Ý định từ tài liệu Android .

Một ý định là một mô tả trừu tượng của một hoạt động sẽ được thực hiện. Nó có thể được sử dụng với startActivity để khởi chạy Activity, BroadcastIntent để gửi nó đến bất kỳ thành phần BroadcastReceiver nào quan tâm và startService (Intent) hoặc bindService (Intent, ServiceConnection, int) để liên lạc với Dịch vụ nền.

Một ý định cung cấp một phương tiện để thực hiện liên kết thời gian chạy muộn giữa mã trong các ứng dụng khác nhau. Công dụng quan trọng nhất của nó là trong việc ra mắt các hoạt động, nơi nó có thể được coi là chất keo giữa các hoạt động. Về cơ bản, nó là một cấu trúc dữ liệu thụ động chứa một mô tả trừu tượng về một hành động sẽ được thực hiện. Các thông tin chính trong một ý định là:

  • hành động Hành động chung sẽ được thực hiện, chẳng hạn như ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, v.v.
  • dữ liệu Dữ liệu để hoạt động, như bản ghi người trong cơ sở dữ liệu danh bạ, được biểu thị dưới dạng Uri.

Tìm hiểu thêm


4
Tôi đánh giá cao việc sử dụng các khái niệm khoa học máy tính trong giải thích này. Điều này làm cho cuộc thảo luận cụ thể hơn, và đặc biệt hữu ích cho độc giả có bằng cấp vững chắc về khoa học máy tính.
Donal Lafferty

49

Ý định là một cách để nói với Android những gì bạn muốn làm . Nói cách khác, bạn mô tả ý định của bạn. Ý định có thể được sử dụng để báo hiệu cho hệ thống Android rằng một sự kiện nào đó đã xảy ra. Các thành phần khác trong Android có thể đăng ký sự kiện này thông qua bộ lọc ý định.

Sau đây là 2 loại ý định

1. Ý định tuyệt vời

được sử dụng để gọi một thành phần cụ thể. Khi bạn biết thành phần nào bạn muốn khởi chạy và bạn không muốn cung cấp cho người dùng quyền kiểm soát miễn phí đối với thành phần nào sẽ sử dụng. Ví dụ: bạn có một ứng dụng có 2 hoạt động. Hoạt động A và hoạt động B. Bạn muốn khởi chạy hoạt động B từ hoạt động A. Trong trường hợp này, bạn xác định mục đích rõ ràng nhắm mục tiêu hoạt độngB và sau đó sử dụng nó để gọi trực tiếp.

2. Ý định rõ ràng

được sử dụng khi bạn có ý tưởng về những gì bạn muốn làm, nhưng bạn không biết nên khởi chạy thành phần nào. Hoặc nếu bạn muốn cung cấp cho người dùng một tùy chọn để chọn giữa một danh sách các thành phần sẽ sử dụng. Nếu những Ý định này được gửi đến hệ thống Android, nó sẽ tìm kiếm tất cả các thành phần được đăng ký cho hành động cụ thể và loại dữ liệu. Nếu chỉ có một thành phần được tìm thấy, Android sẽ khởi động thành phần trực tiếp. Ví dụ: bạn có một ứng dụng sử dụng máy ảnh để chụp ảnh. Một trong những tính năng của ứng dụng của bạn là bạn cung cấp cho người dùng khả năng gửi những bức ảnh anh ta đã chụp. Bạn không biết người dùng có loại ứng dụng nào có thể gửi ảnh và bạn cũng muốn cung cấp cho người dùng một tùy chọn để chọn ứng dụng bên ngoài nào sẽ sử dụng nếu anh ta có nhiều ứng dụng. Trong trường hợp này, bạn sẽ không sử dụng một ý định rõ ràng.

Một ý định rõ ràng luôn được gửi đến mục tiêu của nó, bất kể nó chứa gì; bộ lọc không được tư vấn. Nhưng một ý định ngầm định chỉ được gửi đến một thành phần nếu nó có thể đi qua một trong các bộ lọc của thành phần

Bộ lọc ý định

Nếu một Ý định được gửi đến hệ thống Android, nó sẽ xác định các ứng dụng phù hợp cho Ý định này. Nếu một số thành phần đã được đăng ký cho loại Ý định này, Android sẽ cung cấp cho người dùng lựa chọn mở một trong số chúng.

Quyết định này dựa trên IntentFilters. Một IntentFilters chỉ định các loại Ý định mà một hoạt động, dịch vụ hoặc Bộ thu phát sóng có thể đáp ứng. Bộ lọc Intent khai báo các khả năng của một thành phần. Nó chỉ định những gì hoạt động hoặc dịch vụ có thể làm và những loại phát sóng mà Người nhận có thể xử lý. Nó cho phép thành phần tương ứng nhận Ý định của kiểu khai báo. IntentFilters thường được xác định thông qua tệp AndroidManifest.xml. Đối với BroadcastReceiver, cũng có thể định nghĩa chúng trong mã hóa. Một IntentFilters được xác định bởi các bộ lọc thể loại, hành động và dữ liệu của nó. Nó cũng có thể chứa siêu dữ liệu bổ sung.

Nếu một thành phần không xác định bộ lọc Intent, nó chỉ có thể được gọi bởi Ý định rõ ràng.

Sau đây là 2 cách để xác định bộ lọc

1. tập tin dễ nhất

Nếu bạn xác định bộ lọc ý định trong tệp kê khai, ứng dụng của bạn không phải chạy để phản ứng với các ý định được xác định trong bộ lọc của nó. Android đăng ký bộ lọc khi ứng dụng của bạn được cài đặt.

2.BroadCast Nhận

Nếu bạn muốn máy thu quảng bá của bạn chỉ nhận được ý định khi ứng dụng của bạn đang chạy. Sau đó, bạn nên xác định bộ lọc ý định của bạn trong thời gian chạy (theo chương trình). Hãy nhớ rằng điều này chỉ hoạt động cho các máy thu phát sóng.


12

Sau khi viết một hoạt động, cần phải chuyển sang hoạt động khác để thực hiện một nhiệm vụ khác có hoặc không có thông tin từ hoạt động đầu tiên.

Nền tảng Android cho phép chuyển đổi bằng Giao diện Ý định.

Các từ được lấy từ đây: Sử dụng Intent Demo và tôi khuyên bạn nên xem qua ví dụ này vì họ cũng đã cung cấp một tệp mã. vì vậy bạn có thể sử dụng nó và dễ dàng hiểu như vậy.


Ý định là cho nhiều hơn là chuyển đổi giữa các hoạt động. Nó sẽ hữu ích hơn để cung cấp một cái nhìn tổng quan.
Vaddadi Kartick

@KartickVaddadi Đồng ý với quan điểm của bạn. Đây là câu trả lời của tôi cho một lần sử dụng Ý định!
Paresh Mayani

Paresh, liên kết blog.vimviv.com/android/intent-android không hoạt động nữa :(
user2060383

9

Ý định của Android

Android Intent cho phép bạn điều hướng từ hoạt động Android này sang hoạt động khác. Với các ví dụ, hướng dẫn này cũng nói về các loại ý định Android khác nhau.

Android Intent có thể được định nghĩa là một đối tượng tin nhắn đơn giản được sử dụng để liên lạc từ hoạt động này sang hoạt động khác.

Ý định xác định ý định của một Ứng dụng. Chúng cũng được sử dụng để chuyển dữ liệu giữa các hoạt động.

Một ý định Android có thể được sử dụng để thực hiện 3 tác vụ sau:

  1. Mở một Hoạt động hoặc Dịch vụ khác từ Hoạt động hiện tại
  2. Truyền dữ liệu giữa Hoạt động và Dịch vụ
  3. Giao trách nhiệm cho một ứng dụng khác. Ví dụ: bạn có thể sử dụng Ý định để mở ứng dụng trình duyệt để hiển thị URL.

Ý định có thể được phân loại thành 2 loại. Không có từ khóa cho thể loại này và chỉ là một phân loại rộng về cách sử dụng ý định Android.

Ý định rõ ràng của Android

Mục đích rõ ràng của Android là Mục đích mà bạn xác định rõ ràng thành phần cần được gọi bởi Hệ thống Android.

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

Ý định Android tiềm ẩn

Ý định tiềm ẩn của Android là mục đích thay vì xác định các thành phần chính xác, bạn xác định hành động bạn muốn thực hiện. Quyết định xử lý hành động này được để lại cho hệ điều hành. HĐH quyết định thành phần nào là tốt nhất để chạy cho các ý định ngầm. Hãy cho chúng tôi xem một ví dụ:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

Để biết thêm thông tin bạn có thể truy cập dưới đây

http://developer.android.com/reference/android/content/Intent.html


9

Theo tài liệu của họ:

Mục đích là một đối tượng cung cấp liên kết thời gian chạy giữa các thành phần riêng biệt (chẳng hạn như hai hoạt động). Ý định đại diện cho "ý định làm một cái gì đó" của ứng dụng. Bạn có thể sử dụng ý định cho nhiều nhiệm vụ khác nhau, nhưng hầu hết chúng thường được sử dụng để bắt đầu một hoạt động khác.

Đây là liên kết với ví dụ: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Như tài liệu mô tả, để bắt đầu một hoạt động (bạn cũng cần hiểu hoạt động đó là gì) sử dụng ý định như dưới đây

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

8

Một ý định là một mô tả trừu tượng của một hoạt động sẽ được thực hiện. Nó có thể được sử dụng với startActivity để khởi chạy Activity, BroadcastIntent để gửi nó đến bất kỳ thành phần BroadcastReceiver nào quan tâm và startService (Intent) hoặc bindService (Intent, ServiceConnection, int) để liên lạc với Dịch vụ nền.

Để biết thêm chi tiết, xem các liên kết sau:

1). http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3). http://www.vogella.de/articles/AndroidIntent/article.html

Có rất nhiều bài viết có sẵn.


5

Ý định là gì?

Nó là một loại tin nhắn hoặc thông tin được truyền đến các thành phần. Nó được sử dụng để khởi chạy một hoạt động, hiển thị trang web, gửi sms, gửi email, v.v.

Có hai loại ý định trong Android:

Ý định ngầm
định

Mục đích ngầm được sử dụng để gọi các thành phần hệ thống

Thí dụ

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));

startActivity(i);

Mục đích rõ ràng được sử dụng để gọi lớp hoạt động.

Thí dụ

Ý định = newIntent (this, SecondActivity. Class);

startActivity(intent);

bạn có thể đọc thêm

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html


2

Một ý định là một lớp, đó là ràng buộc thông tin để thực hiện một số hành động.

ví dụ: chuyển dữ liệu một hoạt động sang một hành động khác khi người dùng thực hiện các hành động đó trong

hoạt động hiện tại.


1

Trong một cái nhìn rộng, chúng ta có thể định nghĩa Ý định

Khi một Hoạt động muốn bắt đầu một hoạt động khác, nó tạo ra một Đối tượng gọi là Ý định chỉ định Hoạt động nào nó muốn bắt đầu.


0

Một ứng dụng Android có thể chứa 0 hoặc nhiều hoạt động. Khi ứng dụng của bạn có nhiều hoạt động, bạn thường cần điều hướng từ hoạt động này sang hoạt động khác. Trong Android, bạn điều hướng giữa các hoạt động thông qua những gì được gọi là mục đích. Bạn có thể chuyển một số dữ liệu cho hoạt động mà bạn muốn bắt đầu thông qua ý định, bằng cách sử dụng putExtra ().


0

Từ liên kết giấyDeep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013

Mục đích được hiểu trong một số dòng nhỏ nhưng hiệu quả

  1. Android hỗ trợ một hình thức IPC đơn giản (giao tiếp giữa quá trình) thông qua ý định
  2. Tin nhắn ý định là một khuôn khổ để giao tiếp không đồng bộ giữa các thành phần Android (hoạt động, dịch vụ, nhà cung cấp nội dung, máy thu quảng bá)
  3. Các thành phần đó có thể chạy trong cùng hoặc trên các ứng dụng khác nhau (ví dụ: quy trình)
  4. Cho phép cả điểm-điểm cũng như xuất bản các miền nhắn tin đăng ký
  5. Mục đích tự nó đại diện cho một thông điệp có chứa mô tả của hoạt động sẽ được thực hiện cũng như dữ liệu được truyền đến người nhận.

Từ chủ đề này, một câu trả lời đơn giản của kiến ​​trúc sư Android Dianne Hackborn nói rằng data containernó thực sự là như vậy.

Từ quan điểm kiến ​​trúc Android :

Ý định là một thùng chứa dữ liệu được sử dụng để liên lạc giữa các quá trình. Nó được xây dựng trên đỉnh của Binderquan điểm kiến ​​trúc Android.


0

Ý định được sử dụng để bắt đầu một hoạt động khác từ một hoạt động. Về cơ bản, nó được sử dụng cho một số mục đích như gửi dữ liệu đến một hoạt động khác từ một hoạt động và cho các mục đích kích hoạt.

Chúng cơ bản có hai loại

  1. Ý định ngầm.

  2. Ý định rõ ràng.

Là người mới bắt đầu tôi biết nhiều về điều này, tôi nghĩ rằng điều này sẽ đưa ra một số ý tưởng cơ bản về ý định của Android


2
Xin vui lòng, đọc liên kết này về cách trả lời câu hỏi.
Bonatti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.