PRM392Chưa đoKỳ 7Chuyên ngành Cập nhật 24/07/2026

Mobile Programming - Lập trình di động

Ôn luyện PRM392 – Lập trình di động (Mobile Programming) với ngân hàng câu hỏi trắc nghiệm Android có giải thích chi tiết, luyện thi cuối kỳ hiệu quả. Nội dung bao quát Activity, Fragment, RecyclerView, Intent, Service, BroadcastReceiver, lưu trữ SharedPreferences/SQLite và gọi API/Retrofit. Môn 3 tín chỉ tại FPT University, tiên quyết PRO192, lập trình bằng Java trên Android Studio.

271Câu hỏi
9Chủ đề
Thử sức tại chỗ

Trả lời ngay tại đây

Chưa trả lời câu nào
1PRM392 - Chương 5: Service, luồng và xử lý bất đồng bộ
Which of the following Android system services are involved in routing intents to broadcast receivers?
2PRM392 - Chương 4: Intent, Broadcast và Notification
Which of the following correctly describe benefits that an intent provides to apps in Android?
3PRM392 - Chương 4: Intent, Broadcast và Notification
Which of the following are information in an Android intent?
Còn 3 câu nữa ở trên

Trả lời hết các câu trên để xem tổng kết, hoặc vào phiên học ngay.

Học từ ngân hàng câu hỏi

Bắt đầu một phiên học theo môn

Tiến độ của bạn luôn được tính và đồng bộ trực tiếp theo tổng số lượng câu hỏi mới nhất của môn học này.

271Ngân hàng hiện tại--Tiến độ môn

Câu hỏi của môn

24/271 câuCòn 247
AActivities
BServices
CBroadcast Receivers
DContent Providers
Lời giải
Component xử lý nền (background processing) liên quan đến một ứng dụng thường được thực hiện bởi các Service. Các Service có thể chạy trong nền mà không cần người dùng tương tác với ứng dụng. Điều này cho phép các ứng dụng thực hiện các tác vụ như cập nhật dữ liệu, gửi thông báo, hoặc thực hiện các tác vụ khác mà không làm gián đoạn người dùng. Các Service cũng có thể được sử dụng để thực hiện các tác vụ lặp đi lặp lại mà không cần người dùng tương tác.
Mở trang câu hỏi này →
AThe symbolic name of the provider
BA name that points to a table or file
CAn optional part that points to an individual row in a table
DMetadata defining the synchronization policy for concurrent access
Lời giải
Một URI nội dung (Content URI) thường bao gồm các phần sau: - Tên biểu tượng của nhà cung cấp (The symbolic name of the provider): Đây là tên hoặc biểu tượng của nhà cung cấp dữ liệu, giúp xác định nguồn gốc của dữ liệu. - Tên chỉ đến một bảng hoặc tệp tin (A name that points to a table or file): Đây là phần chỉ đến một bảng hoặc tệp tin cụ thể, giúp xác định dữ liệu cần truy cập. - Một phần tùy chọn chỉ đến một hàng cụ thể trong bảng (An optional part that points to an individual row in a table): Đây là phần tùy chọn chỉ đến một hàng cụ thể trong bảng, giúp xác định dữ liệu cần truy cập. Các phần này thường được sử dụng trong hệ thống quản lý cơ sở dữ liệu để xác định và truy cập dữ liệu.
Mở trang câu hỏi này →
AA WebClient facade class for simple download/upload operations via HTTP or FTP
BWebRequest and WebResponse classes for high-level control over client-side TCP or UDP operations
CHttpServer for consuming HTTP web APIs and RESTful services
DAll of the others
Lời giải
Các thành phần chính của System.Net.* Namespaces là các lớp giúp thực hiện các hoạt động mạng như tải/xuất dữ liệu qua HTTP hoặc FTP. Lớp WebClient cung cấp một giao diện đơn giản để thực hiện các hoạt động tải/xuất dữ liệu qua HTTP hoặc FTP. Các lớp WebRequest và WebResponse cung cấp một mức độ kiểm soát cao hơn về các hoạt động mạng, bao gồm cả việc kiểm soát các hoạt động TCP hoặc UDP. Lớp HttpServer giúp tiêu thụ các API web HTTP và dịch vụ RESTful. Do đó, tất cả các lựa chọn trên đều là đúng.
Mở trang câu hỏi này →
AOnly high level
BOnly urgent level
CHigh and urgent level
DMedium and higher level
Lời giải
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".
Mở trang câu hỏi này →
A12sp
B14sp
C16sp
D18sp
Lời giải
Khi một thành phần UI như TextView có nhiều thuộc tính được áp dụng, thì thuộc tính nào sẽ được ưu tiên? Trong trường hợp này, thuộc tính textSize được áp dụng từ ba nguồn khác nhau: thuộc tính mặc định của TextView (16sp), style được áp dụng cho TextView (14sp) và theme của ứng dụng (12sp). Theo nguyên tắc, thuộc tính được áp dụng gần nhất với thành phần sẽ được ưu tiên. Do đó, thuộc tính textSize được áp dụng từ style (14sp) sẽ được ưu tiên hơn thuộc tính mặc định của TextView (16sp) và theme của ứng dụng (12sp). Vì vậy, kích thước chữ của TextView sẽ được hiển thị là 14sp.
Mở trang câu hỏi này →
ASet a Bundle and use the Fragment.setArguments(Bundle) method to supply the construction arguments for the fragment.
BUse the Fragment method getArguments() to get the arguments.
CDefine an interface in the Fragment class, and implement the interface in the activity.
DCall addToBackStack() during a transaction that removes the fragment.
Lời giải
Để gửi dữ liệu từ một hoạt động sang một fragment, bạn cần sử dụng phương thức setArguments() của Fragment. Phương thức này cho phép bạn cung cấp các tham số xây dựng cho fragment. Bạn cần tạo một đối tượng Bundle để lưu trữ dữ liệu, sau đó sử dụng phương thức setArguments() để truyền đối tượng Bundle này cho fragment. Sau đó, bạn có thể sử dụng phương thức getArguments() của Fragment để lấy lại dữ liệu đã được truyền. Điều này cho phép bạn chia sẻ dữ liệu giữa hoạt động và fragment một cách dễ dàng.
Mở trang câu hỏi này →
Amenu.java
Bmenu_main.xml
Cactivity_main.xml
Dcontent_main.xml
Lời giải

Để tạo các mục trong menu (chọn lựa), bạn cần tạo một file XML có tên là menu_main.xml. Đây là file XML được sử dụng để tạo các mục trong menu của ứng dụng Android. Trong file này, bạn có thể thêm, sửa hoặc xóa các mục trong menu của ứng dụng. Mỗi mục trong menu được định nghĩa bằng một thẻ <item> và có các thuộc tính như id, title, icon, v.v. Để sử dụng file menu_main.xml, bạn cần thêm một thẻ <menu> vào file activity_main.xml và liên kết nó với file menu_main.xml.

Mở trang câu hỏi này →
AEditText
BTextView
CLabel
DTextArea
Lời giải
Để hiển thị văn bản, bạn sẽ sử dụng control nào? Trong lập trình Android, có nhiều loại control khác nhau có thể được sử dụng để hiển thị văn bản. Tuy nhiên, trong trường hợp này, bạn sẽ sử dụng TextView. TextView là một trong những control phổ biến nhất trong Android và được sử dụng để hiển thị văn bản đơn giản. Nó cho phép bạn định dạng văn bản bằng cách sử dụng các thuộc tính như màu sắc, font, kích thước, v.v. Ngoài ra, TextView cũng hỗ trợ các tính năng như gạch đầu dòng, gạch chân, v.v. Nó cũng có thể được sử dụng để hiển thị văn bản có liên kết. EditText và TextArea thường được sử dụng để nhập văn bản, trong khi Label thường được sử dụng để hiển thị văn bản cố định mà không cho phép người dùng nhập vào. Vì vậy, trong trường hợp này, TextView là lựa chọn phù hợp nhất.
Mở trang câu hỏi này →
ATrue
BFalse
CCan be true or false
Lời giải
Trong lập trình Android, một View và một Widget được sử dụng để tạo ra các thành phần giao diện người dùng. Một View là một đơn vị cơ bản trong giao diện người dùng, có thể là một hình chữ nhật, một hình tròn, một văn bản, v.v. Một Widget là một loại View đặc biệt, thường được sử dụng để hiển thị thông tin hoặc thực hiện một hành động khi người dùng tương tác với nó. Vì vậy, một View cũng có thể được coi là một Widget trong Android, vì cả hai đều là các thành phần giao diện người dùng.
Mở trang câu hỏi này →
AFalse
BTrue
Lời giải
FragmentManager là lớp chịu trách nhiệm thực hiện các hành động đối với các phần tử fragment của ứng dụng của bạn, chẳng hạn như thêm, xóa hoặc thay thế chúng, và thêm chúng vào ngăn xếp.
Mở trang câu hỏi này →
AExplicit Intent
BImplicit Intent
CContent Provider
DService
Lời giải
Để 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.
Mở trang câu hỏi này →
ANavigation buttons
BOptions menu overflow button
CFloating action button
DButton class button with the text "Button"
Lời giải
Mẫu Basic Activity cung cấp một số nút bấm trong giao diện người dùng (UI). Để trả lời câu hỏi này, chúng ta cần xem xét các lựa chọn được đưa ra. Lựa chọn đầu tiên là Navigation buttons, đây là các nút điều hướng thường được sử dụng trong các ứng dụng di động. Lựa chọn thứ hai là Options menu overflow button, đây là nút menu tùy chọn được sử dụng khi có nhiều tùy chọn hơn một dòng. Lựa chọn thứ ba là Floating action button, đây là nút hành động nổi thường được sử dụng để thực hiện một hành động quan trọng. Lựa chọn cuối cùng là Button class button với nội dung "Button", đây là một nút thông thường được sử dụng để thực hiện một hành động. Theo thông tin được cung cấp, mẫu Basic Activity chỉ cung cấp một nút Floating action button.
Mở trang câu hỏi này →
Aservices
Bsimulator
CEmulator
DIntent
Lời giải
Các lựa chọn sau không có thành phần UI và chạy như một quy trình nền. Các quy trình nền thường được sử dụng để thực hiện các tác vụ không cần người dùng tương tác. Trong hệ điều hành Android, các dịch vụ (services) là một loại quy trình nền. Chúng có thể chạy trong nền mà không cần người dùng tương tác. Ví dụ, một dịch vụ có thể được sử dụng để cập nhật dữ liệu trên máy chủ hoặc gửi thông báo đến người dùng. Một máy mô phỏng (simulator) cũng không có thành phần UI và chạy như một quy trình nền. Nó được sử dụng để mô phỏng thiết bị di động và chạy ứng dụng trên đó. Một máy emulatơ (emulator) cũng không có thành phần UI và chạy như một quy trình nền. Nó được sử dụng để emulat hóa thiết bị di động và chạy ứng dụng trên đó. Tuy nhiên, Intent là một loại thông điệp được sử dụng để giao tiếp giữa các ứng dụng và các thành phần khác trong hệ điều hành Android. Nó không phải là một quy trình nền và không có thành phần UI.
Mở trang câu hỏi này →
AMainActivity.java
BAndroidManifest.xml
Cactivity_main.xml
Dbuild.gradle
Lời giải
Để xác định layout file cho hoạt động chính (main activity), bạn cần biết rằng layout file là một tệp XML được sử dụng để định dạng giao diện người dùng của ứng dụng Android. Trong đó, tệp layout chính cho hoạt động chính thường được đặt tên là activity_main.xml. Đây là tệp XML được sử dụng để xác định bố cục của màn hình chính, bao gồm các thành phần như button, textview, imageview, v.v. Tệp này được sử dụng để tạo ra giao diện người dùng của ứng dụng và được liên kết với hoạt động chính thông qua tệp AndroidManifest.xml.
Mở trang câu hỏi này →
19How does RecyclerView display items?4 lựa chọn
AIt displays items in a list or a grid.
BIt scrolls vertically or horizontally.
CIt scrolls diagonally on larger devices, such as tablets.
DIt allows custom layouts.
Lời giải
RecyclerView trong Android được sử dụng để hiển thị danh sách các item. Nó có thể hiển thị các item theo dạng danh sách hoặc lưới. Ngoài ra, RecyclerView cũng hỗ trợ việc lật trang và cuộn ngang. Điều này giúp người dùng dễ dàng xem và tương tác với các item trong danh sách. Bên cạnh đó, RecyclerView còn cho phép người dùng tùy chỉnh layout của các item theo ý muốn, giúp tạo ra giao diện độc đáo và hấp dẫn.
Mở trang câu hỏi này →
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ộ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.
Mở trang câu hỏi này →
AFilesystem accesses are often relatively slow
BSQLite doesn't support synchronous operations
CSQLite supports the SQL92 specification, which is obsolete
DAndroid filesystems are unreliable due to their use of flash memory
Lời giải
Khi xây dựng ứng dụng Android, việc truy cập cơ sở dữ liệu SQLite thường đòi hỏi sự đồng bộ hóa hoặc bất đồng bộ hóa. Một trong những lý do chính là do các truy cập vào hệ thống tệp thường diễn ra chậm. Điều này là do các hệ thống tệp trên Android thường sử dụng bộ nhớ flash, dẫn đến độ tin cậy thấp hơn so với các hệ thống tệp truyền thống. Việc sử dụng đồng bộ hóa hoặc bất đồng bộ hóa giúp ứng dụng Android có thể tiếp tục hoạt động mà không bị gián đoạn khi truy cập cơ sở dữ liệu. Ngoài ra, việc sử dụng bất đồng bộ hóa còn giúp giảm thiểu thời gian chờ đợi và cải thiện hiệu suất của ứng dụng.
Mở trang câu hỏi này →
AregisterBroadcast() and unRegisterBroadcast()
BregisterComponentCallbacks() and unRegisterComponentCallbacks()
CregisterBroadcastReceiver() and unRegisterBroadcastReceiver()
DregisterReceiver() and unRegisterReceiver().
Lời giải
Để đă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.
Mở trang câu hỏi này →
ANotification.notify()
BNotificationManager.notify()
CNotificationCompact.notify()
DNotificationCompat.Builder.notify()
Lời giải
Để 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ị.
Mở trang câu hỏi này →
Aandroid:orientation="horizontal"
Bandroid:orientation="vertical"
Candroid:layout_width="wrap_content"
Dandroid:layout_weigh="1"
Lời giải
Để hiển thị các view bên cạnh nhau trong một LinearLayout, bạn cần sử dụng thuộc tính android:orientation. Bạn có thể chọn hai giá trị cho thuộc tính này: horizontal hoặc vertical. Nếu bạn chọn horizontal, các view sẽ được hiển thị theo chiều ngang, tức là bên cạnh nhau. Ngược lại, nếu bạn chọn vertical, các view sẽ được hiển thị theo chiều dọc, tức là chồng lên nhau. Trong câu hỏi này, câu trả lời đúng là android:orientation="horizontal".
Mở trang câu hỏi này →