Câu hỏi: PRM392 - Chương 4: Intent, Broadcast và Notification
43 câu trắc nghiệm kèm lời giải của môn Mobile Programming - Lập trình di động, xếp theo thứ tự nhập vào ngân hàng.
Danh sách câu hỏi
20/43 câuCòn 23
1Which of the following correctly describe benefits that an intent provides to apps in Android?4 lựa chọn
AAn intent manages secure access to structured data
BAn intent simplifies app development since existing components can be reused as "black-boxes"
CAn intent is the "glue" that helps integrate Android apps
DAn intent defines the smallest unit of execution for sequences of programmed instructions
Lời giải
Mở trang câu hỏi này →Một intent trong Android đóng vai trò quan trọng trong việc tích hợp các ứng dụng. Nó giúp liên kết các thành phần khác nhau của ứng dụng, cho phép chúng tương tác với nhau một cách hiệu quả. Ví dụ, khi bạn muốn mở một ứng dụng khác từ ứng dụng hiện tại, bạn có thể sử dụng intent để gửi yêu cầu mở ứng dụng đó. Điều này giúp giảm thiểu sự phức tạp trong việc phát triển ứng dụng và tăng cường khả năng tương tác giữa các ứng dụng khác nhau. Ngoài ra, intent cũng giúp ứng dụng có thể nhận được thông tin từ các nguồn khác nhau, chẳng hạn như từ các ứng dụng khác hoặc từ các dịch vụ mạng.
A
DataB
ActionC
URLD
ExtrasLời giải
Mở trang câu hỏi này →Một intent trong Android là một cách để các ứng dụng giao tiếp với nhau. Các thông tin trong một intent bao gồm dữ liệu (data), hành động (action) và các thuộc tính phụ (extras). Dữ liệu (data) là nội dung mà ứng dụng muốn truyền đi, hành động (action) là loại hành động mà ứng dụng muốn thực hiện, chẳng hạn như mở ứng dụng khác hoặc thực hiện một chức năng cụ thể. Các thuộc tính phụ (extras) là các thông tin bổ sung mà ứng dụng muốn truyền đi cùng với dữ liệu chính. Ví dụ, khi bạn muốn mở ứng dụng khác, bạn có thể truyền đi thông tin về vị trí hiện tại hoặc thông tin về người dùng. Tóm lại, các thông tin trong một intent bao gồm dữ liệu, hành động và các thuộc tính phụ.
AOnly high level
BOnly urgent level
CHigh and urgent level
DMedium and higher level
Lời giải
Mở trang câu hỏi này →Thông báo mức độ quan trọng nào sẽ tạo ra âm thanh khi xuất hiện?
Thông báo có mức độ quan trọng cao và cấp bách sẽ tạo ra âm thanh khi xuất hiện. Điều này giúp người dùng nhận biết được thông báo quan trọng và cần xử lý ngay lập tức. Mức độ quan trọng cao và cấp bách thường được sử dụng cho các thông báo như sự cố hệ thống, lỗi nghiêm trọng hoặc yêu cầu khẩn cấp.
Tùy chọn đúng là "Mức cao và cấp bách".
AExplicit Intent
BImplicit Intent
CContent Provider
DService
Lời giải
Mở trang câu hỏi này →Để mở một URL trong ứng dụng Android, chúng ta thường sử dụng một loại Intent đặc biệt gọi là Implicit Intent. Implicit Intent là một loại Intent mà không cần phải rõ ràng về ứng dụng nào sẽ xử lý nó. Khi chúng ta sử dụng Implicit Intent để mở một URL, hệ thống sẽ tự động tìm kiếm ứng dụng có khả năng mở URL đó và mở nó lên. Ví dụ, khi chúng ta sử dụng Intent.ACTION_VIEW để mở một URL, hệ thống sẽ tìm kiếm ứng dụng có khả năng mở URL đó và mở nó lên. Điều này giúp cho ứng dụng của chúng ta có thể mở URL một cách linh hoạt và dễ dàng.
AAn intent just consists of fields and field access/mutator methods
BAn intent cannot be used in a concurrent program
CAn intent only contains public fields
DAn intent only contains static getter/setter methods
Lời giải
Mở trang câu hỏi này →Một cấu trúc dữ liệu "passive" trong ngữ cảnh này đề cập đến một ý định (intent) chỉ chứa các trường (fields) và phương thức truy cập/mutator. Ý định này không có bất kỳ hành động nào được thực hiện tự động khi truy cập hoặc thay đổi các trường. Điều này khác với các cấu trúc dữ liệu "active", nơi các hành động được thực hiện tự động khi truy cập hoặc thay đổi các trường. Ví dụ, một ý định có thể chứa một trường "tên" và phương thức "getTen()" để truy cập trường này, nhưng không có hành động nào được thực hiện tự động khi gọi phương thức này. Điều này giúp đảm bảo tính nhất quán và tránh các vấn đề về đồng bộ hóa trong các chương trình đa luồng.
6Which pair of methods do you use to register and unregister your broadcast receiver dynamically?4 lựa chọn
AregisterBroadcast() and unRegisterBroadcast()
BregisterComponentCallbacks() and unRegisterComponentCallbacks()
CregisterBroadcastReceiver() and unRegisterBroadcastReceiver()
DregisterReceiver() and unRegisterReceiver().
Lời giải
Mở trang câu hỏi này →Để đăng ký và hủy đăng ký một Broadcast Receiver động, bạn cần sử dụng hai phương thức khác nhau. Trong Android, bạn có thể sử dụng phương thức registerReceiver() để đăng ký một Broadcast Receiver và unregisterReceiver() để hủy đăng ký nó. Điều này cho phép bạn quản lý Broadcast Receiver của mình một cách linh hoạt và hiệu quả. Phương thức registerReceiver() yêu cầu bạn cung cấp một IntentFilter để xác định loại Broadcast mà Broadcast Receiver sẽ nhận và một ComponentName để xác định Broadcast Receiver đó. Ngược lại, phương thức unregisterReceiver() yêu cầu bạn cung cấp một BroadcastReceiver để hủy đăng ký nó. Sử dụng các phương thức này một cách chính xác sẽ giúp bạn quản lý Broadcast Receiver của mình một cách tốt nhất.
A
Notification.notify()B
NotificationManager.notify()C
NotificationCompact.notify()D
NotificationCompat.Builder.notify()Lời giải
Mở trang câu hỏi này →Để hiển thị một thông báo trong thanh thông báo và thanh trạng thái thiết bị, bạn cần sử dụng API NotificationCompat.Builder. Đây là một lớp xây dựng thông báo được thiết kế để hỗ trợ các phiên bản Android khác nhau. Bạn có thể sử dụng phương thức notify() của lớp này để hiển thị thông báo. Ví dụ, bạn có thể tạo một đối tượng NotificationCompat.Builder và sử dụng phương thức notify() để hiển thị thông báo. Ngoài ra, bạn cũng có thể sử dụng NotificationManager để quản lý các thông báo trên thiết bị.
AYou use notification channels to display notifications to the user in the device status bar.
BYou use notification channels to group multiple notifications so that the user can control the notifications' behavior.
CNotification channels are available in older devices, those running Android 7.0 Nougat (API 24) and lower.
DNotification channels are not yet available in the Android Support Library package.
Lời giải
Mở trang câu hỏi này →Các kênh thông báo được sử dụng để hiển thị thông báo cho người dùng trên thanh trạng thái thiết bị. Ngoài ra, các kênh thông báo còn được sử dụng để nhóm nhiều thông báo lại với nhau, giúp người dùng có thể kiểm soát hành vi của các thông báo. Điều này cho phép người dùng có thể tùy chỉnh cách hiển thị và xử lý thông báo của ứng dụng.
AThe name of the component to be started
BThe type of operation to be performed, such as "ACTION_VIEW," "ACTION_SEND", "ACTION_DIAL".
CThe layout of the user interface
DThe permissions required to use the Intent.
Lời giải
Mở trang câu hỏi này →Trong Android, hành động (action) của một Intent đại diện cho loại hoạt động nào đó mà ứng dụng muốn thực hiện. Ví dụ, ACTION_VIEW, ACTION_SEND, ACTION_DIAL, v.v. Hành động này giúp hệ thống Android xác định ứng dụng nào phù hợp để thực hiện yêu cầu của Intent. Nó giống như một lệnh hoặc một yêu cầu được gửi đến hệ thống Android, và hệ thống sẽ tìm kiếm ứng dụng phù hợp để thực hiện yêu cầu đó. Hành động có thể được sử dụng để thực hiện các hoạt động như xem, gửi, gọi điện, v.v. Nó là một phần quan trọng của Intent và giúp hệ thống Android hiểu được yêu cầu của ứng dụng.
10What is broadcast receiver in android?4 lựa chọn
AIt will react on broadcast announcements.
BIt will do background functionalities as services.
CIt will pass the data between activities
DNone of the others
Lời giải
Mở trang câu hỏi này →Broadcast receiver trong Android là một thành phần quan trọng giúp ứng dụng phản ứng với các thông báo (broadcast) được gửi ra. Khi một ứng dụng muốn gửi ra thông báo, nó sẽ sử dụng một lớp Broadcast để gửi thông tin đến các ứng dụng khác. Các ứng dụng nhận được thông báo này có thể sử dụng Broadcast Receiver để xử lý thông tin và phản ứng lại. Broadcast Receiver có thể được sử dụng để thực hiện các tác vụ như nhận thông tin từ các ứng dụng khác, cập nhật dữ liệu, hoặc thực hiện các hành động khi ứng dụng đang chạy ở nền tảng.
AThe category must not be specified
BThe name must not be specified
CThe action must not be specified
DThe data must not be specified
Lời giải
Mở trang câu hỏi này →Một ý định 'kín đáo' (implicit) trong lập trình máy tính thường không yêu cầu thông tin cụ thể về các yếu tố như tên (name), hành động (action) hoặc dữ liệu (data). Tuy nhiên, điều quan trọng cần lưu ý là đối tượng (object) hoặc danh mục (category) không phải lúc nào cũng được yêu cầu. Trong một số trường hợp, chúng có thể được xác định tự động hoặc không được sử dụng. Vì vậy, câu trả lời đúng cho câu hỏi này là 'The name must not be specified' và có thể là 'The category must not be specified' tùy thuộc vào ngữ cảnh cụ thể.
Anew Intent()
Bnew Intent(Context context, Class<?> class)
Cnew Intent(String action, Uri uri)
Dnew Intent(String action)
Lời giải
Mở trang câu hỏi này →Để tạo một Intent mới có thể nhận biết rõ ràng, bạn cần sử dụng phương thức constructor phù hợp. Có bốn phương thức constructor khác nhau trong lớp Intent, mỗi phương thức đều có mục đích và cách sử dụng khác nhau.
Phương thức constructor đầu tiên là new Intent(), nó được sử dụng để tạo một Intent mới mà không có thông tin cụ thể nào. Tuy nhiên, điều này không phải là một ý tưởng hay vì Intent mới tạo ra sẽ không thể nhận biết được.
Phương thức constructor thứ hai là new Intent(Context context, Class<?> class), nó được sử dụng để tạo một Intent mới có thể nhận biết rõ ràng. Trong phương thức này, bạn cần cung cấp một đối tượng Context và một lớp Class. Đối tượng Context đại diện cho ứng dụng đang chạy, trong khi lớp Class đại diện cho hoạt động mà Intent muốn khởi chạy.
Phương thức constructor thứ ba là new Intent(String action, Uri uri), nó được sử dụng để tạo một Intent mới có thể nhận biết rõ ràng. Trong phương thức này, bạn cần cung cấp một chuỗi hành động (action) và một URI (Uniform Resource Identifier). Chuỗi hành động đại diện cho hành động mà Intent muốn thực hiện, trong khi URI đại diện cho dữ liệu mà Intent muốn truy cập.
Phương thức constructor thứ tư là new Intent(String action), nó được sử dụng để tạo một Intent mới có thể nhận biết rõ ràng. Trong phương thức này, bạn cần cung cấp một chuỗi hành động (action). Chuỗi hành động đại diện cho hành động mà Intent muốn thực hiện.
Tóm lại, để tạo một Intent mới có thể nhận biết rõ ràng, bạn nên sử dụng phương thức constructor new Intent(Context context, Class<?> class). Phương thức này cung cấp thông tin đầy đủ về Intent, giúp nó có thể được nhận biết và xử lý một cách chính xác.
AThe onReceive() hook method in a receiver is called back in the UI thread
BAn app can send an intent to any receiver registered via registerReceiver or the AndroidManifest.xml file
CThe intent namespace is global
DsendBroadcast() allows any other app to receive broadcast intents
Lời giải
Mở trang câu hỏi này →Khi sử dụng tính năng phát sóng (broadcast intents) trong Android, có một số lý do khiến cho vấn đề bảo mật trở nên nghiêm trọng. Thứ nhất, bất kỳ ứng dụng nào cũng có thể gửi một yêu cầu phát sóng đến bất kỳ ứng dụng nhận (receiver) nào đã được đăng ký qua phương thức registerReceiver hoặc qua tệp AndroidManifest.xml. Điều này cho phép các ứng dụng độc hại có thể gửi các yêu cầu phát sóng không mong muốn đến các ứng dụng khác, gây ra các vấn đề bảo mật. Thứ hai, không gian tên (namespace) của các yêu cầu phát sóng là toàn cầu, điều này có nghĩa là bất kỳ ứng dụng nào cũng có thể sử dụng các tên tương tự để gửi các yêu cầu phát sóng. Cuối cùng, phương thức sendBroadcast() cho phép bất kỳ ứng dụng nào nhận được các yêu cầu phát sóng, điều này có thể dẫn đến các vấn đề bảo mật nếu các ứng dụng không được kiểm soát chặt chẽ.
AA message that provides a screen within which users can interact in order to do something
BA component that runs in the background to perform long-running operations or access remote resources
CAn event handler that responds to system-side broadcast announcements
DA message that describes an action to perform or an event that has occurred
Lời giải
Mở trang câu hỏi này →Trong Android, một ý định (intent) là một thông điệp mô tả một hành động cần thực hiện hoặc một sự kiện đã xảy ra. Ý định được sử dụng để giao tiếp giữa các thành phần trong ứng dụng hoặc giữa ứng dụng và hệ điều hành. Nó cung cấp thông tin về hành động cần thực hiện, chẳng hạn như mở một trang web, gửi một tin nhắn hoặc gọi một số điện thoại. Ý định cũng có thể được sử dụng để phản hồi các sự kiện hệ thống, chẳng hạn như khi một ứng dụng được khởi động hoặc khi một thiết bị được kết nối. Ý định được gửi giữa các thành phần thông qua một giao diện gọi là Context, và nó được xử lý bởi các thành phần có thể thực hiện hành động được mô tả trong ý định.
A
DynamicB
OrderedC
StaticD
NormalLời giải
Mở trang câu hỏi này →Các cơ chế phát sóng Android Intent là những cách mà ứng dụng có thể gửi thông điệp đến các ứng dụng khác. Có hai loại cơ chế phát sóng được nhắc đến trong câu hỏi. Trước hết, chúng ta có 'Ordered' (Được sắp xếp), đó là cơ chế phát sóng mà các ứng dụng nhận được thông điệp sẽ được xử lý theo thứ tự. Ví dụ, khi bạn gửi một thông điệp đến các ứng dụng khác để yêu cầu cập nhật dữ liệu, các ứng dụng sẽ được xử lý theo thứ tự và chỉ có ứng dụng đầu tiên được xử lý sẽ trả lời. Thứ hai, chúng ta có 'Normal' (Bình thường), đó là cơ chế phát sóng mà các ứng dụng nhận được thông điệp sẽ được xử lý đồng thời. Ví dụ, khi bạn gửi một thông điệp đến các ứng dụng khác để yêu cầu cập nhật dữ liệu, các ứng dụng sẽ được xử lý đồng thời và có thể trả lời cùng lúc. Cả hai cơ chế phát sóng này đều được sử dụng rộng rãi trong các ứng dụng Android.
AStart other Android components
BShow a dialog
CRegister other receivers
DPop up toast messages
EAll of the others
Lời giải
Mở trang câu hỏi này →Trong phương thức onReceive() của lớp Receiver, có thể thực hiện các hành động sau:
- Bắt đầu các thành phần Android khác như Service, Activity, IntentService...
- Hiển thị thông báo Toast
- Đăng ký các Receiver khác
- Thực hiện các hành động khác như gửi tin nhắn, cập nhật dữ liệu...
Tuy nhiên, không thể hiển thị dialog trong phương thức này vì nó không được chạy trên luồng chính của ứng dụng.
Mục đích của phương thức onReceive() là xử lý các sự kiện nhanh chóng và không tốn thời gian, vì vậy các hành động cần được thực hiện một cách nhanh chóng và hiệu quả.
AIcon that represents the action
BTitle that describes the action
CAction button
DPendingIntent that's sent when the user taps the action button.
Lời giải
Mở trang câu hỏi này →Trong Android, khi người dùng nhấn vào một thông báo, hệ thống sẽ mở một hoạt động (Activity) cụ thể. Để thực hiện điều này, hệ thống sử dụng một thành phần gọi là PendingIntent. PendingIntent là một đối tượng được gửi khi người dùng nhấn vào nút hành động (action button) trong thông báo. Nó chứa thông tin về hoạt động cần mở và các thông tin khác cần thiết để mở hoạt động đó. Khi người dùng nhấn vào thông báo, hệ thống sẽ nhận được PendingIntent và sử dụng nó để mở hoạt động cần thiết. Vì vậy, thành phần được sử dụng để mở hoạt động khi người dùng nhấn vào thông báo là PendingIntent.
18Which constructor method do you use to create an implicit Intent to launch a camera app?4 lựa chọn
Anew Intent()
Bnew Intent(Context context, Class<?> class)
Cnew Intent(String action, Uri uri)
Dnew Intent(String action)
Lời giải
Mở trang câu hỏi này →Để tạo một Intent ngầm định để mở ứng dụng camera, bạn cần sử dụng phương thức constructor "new Intent(String action)". Phương thức này yêu cầu bạn cung cấp một hành động (action) cụ thể, trong trường hợp này là hành động mở ứng dụng camera. Hành động này thường được định nghĩa bởi hệ điều hành hoặc các ứng dụng khác. Ví dụ, để mở ứng dụng camera, bạn có thể sử dụng hành động "android.media.action.IMAGE_CAPTURE". Phương thức constructor này cho phép bạn tạo một Intent ngầm định mà không cần cung cấp thông tin về ứng dụng cụ thể mà bạn muốn mở.
AImplicit intent
BExplicit intent
CService intent
DComponent
Lời giải
Mở trang câu hỏi này →Trong các lựa chọn trên, gửi tin (sender) chỉ định loại nhận tin (type of receiver) ở đâu? Câu trả lời đúng là Explicit intent. Explicit intent là một cách thức trong đó sender có thể chỉ định rõ ràng loại hoạt động mà receiver sẽ thực hiện. Điều này được thực hiện thông qua việc sử dụng các hành động (actions) và các loại dữ liệu (data types) cụ thể. Ví dụ, sender có thể chỉ định rằng receiver cần phải xử lý một file ảnh (image file) hoặc một file văn bản (text file). Điều này giúp cho việc giao tiếp giữa sender và receiver trở nên rõ ràng và hiệu quả hơn.
AAn event handler that responds to broadcast announcements
BA component that runs in the background to perform long-running operations or access remote resources
CA component that defines a user-facing operation that's displayed on a device screen
DA message that describes an action to perform or an event that has occurred
Lời giải
Mở trang câu hỏi này →Một Broadcast Receiver trong Android là một thành phần chạy nền (background component) có thể nhận và phản hồi các thông báo (broadcast announcements) từ hệ điều hành hoặc các ứng dụng khác. Nó có thể thực hiện các tác vụ như cập nhật trạng thái, gửi thông báo, hoặc thậm chí điều khiển các thiết bị ngoại vi. Broadcast Receiver có thể được kích hoạt bởi các sự kiện như khởi động ứng dụng, kết nối mạng, hoặc thay đổi trạng thái pin. Nó cũng có thể được sử dụng để gửi thông báo đến các ứng dụng khác trên thiết bị. Trong câu hỏi này, đáp án đúng là 'Một event handler rằng phản hồi các thông báo (broadcast announcements)', vì nó chính xác mô tả chức năng của một Broadcast Receiver trong Android.