PHẦN 1: LÝ THUYẾTCâu 1: Lập trình di động là gì, có bao nhiêu hệ điều hành phổ biến trên thế giới?Trả lời: Lập trình ứng dụng di động là viết ngôn ngữ lập trình code để xây dựng các tiện
Trang 1ĐẠI HỌC DUY TÂNTRƯỜNG KHOA HỌC MÁY TÍNH
KHOA CÔNG NGHỆ THÔNG TIN
GIẢNG VIÊN HƯỚNG DẪN : Hồ Quốc Dũng
Trang 2PHẦN 1: LÝ THUYẾT
Câu 1: Lập trình di động là gì, có bao nhiêu hệ điều hành phổ biến trên thế giới?
Trả lời:
Lập trình ứng dụng di động là viết ngôn ngữ lập trình (code) để xây dựng các tiện ích, chương trình, app, hệ điều hành trên mobile Hiện nay, có 2 hệ điều hành phổ biến nhất là Android và IOS Ngoài ra còn có các hệ điều hành như: Microsoft, RIM, Bada, Symbian, Other.
Câu 2: Giới thiệu về hệ điều hành Android, lịch sử của các phiên bản?
Trả lời:
- Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008 Android là mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu Kết quả là mặc dù được thiết kế để chạy trên điện thoại và máy tính bảng, Android đã xuất hiện trên TV, máy chơi game và các thiết bị điện tử khác Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công của hệ điều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh
- Lịch sử phát triển của các phiên bản:
Trang 3+ Tháng 11, 2007 Android 1.0 ra đời
+ Vào tháng 9 năm 2008, T-Mobile G1 trở thành nhà sản xuất đầu tiên điện thoại thông minh với nền tảng Android (ver 1.0)
+ Tháng 2 năm 2009, Android 1.1 được phát hành + Tháng 4 năm 2009, Android 1.5 Cupcake được phát hành + Vào tháng 9 năm 2009, Android 1.6 Donut được phát hành + Tháng 10 năm 2009, Android 2.0 Eclair được phát hành + Tháng 1 năm 2010, Android 2.1 Eclair được phát hành + Tháng 5 năm 2010, Android 2.2.x Froyo được phát hành
+ Vào tháng 12 năm 2010, Android 2.3.x Gingerbread được phát hành + Tháng 2 năm 2011, Android 3.x Honeycomb Froyo được phát hành + Vào tháng 10 năm 2011, Android 4.0.x Ice Cream Sandwich + được phát hành
+ Tháng 7/2012, Android 4.1 Jelly Bean được phát hành + Tháng 11/2012, Android 4.2 Jelly Bean được phát hành + Tháng 7/2013, Android 4.3 Jelly Bean được phát hành →Android 4.4 KitKat tiếp theo → android 5.0 lollipop→ 6,0 → 7,0
Câu 3: Manifest trong Project Android dùng để làm gì?
Trả lời :
Chức năng file AndroidMainfest.xml
- Mô tả các đặc điểm cơ bản của ứng dụng và xác định từng thành phần của nó - Lưu trữ thông tin tên gói ứng dụng:
Ví dụ: com.htsi.myfirstapp
Trang 4- Cho biết ứng dụng sử dụng các thành phần nào, mỗi thành phần được khai trong một cặp thẻ.
Ví dụ: <activity>….</activity>
- Định nghĩa các quyền sử dụng API và truy xuất ứng dụng khác - Khai báo cấp độ API tối thiểu xây dựng ứng dụng.
- Khai báo Icon, tên ứng dụng và các thư viện có liên quan.
Câu 4: Mô tả LifeCycle của 1 ứng dụng Android
Trả lời :
Life Cycle States:
Một activity về căn bản có ba trạng thái:
1 Active / running: đang ở tại foreground của màn hình (trên đỉnh của activity stack), đang chạy.
2 Paused: mất focus, vẫn được hiển thị trên màn hình nhưng một activity khác đang nằm trên nó và cái activity mới này hoặc có nền trong suốt hoặc không phủ kín màn hình Có thể bị hệ thống kill nếu ở tình trạng rất thiếu bộ nhớ.
3 Dừng (stopped) bị một activity khác che khuất hoàn toàn Hệ thống thường kill nó nếu cần bộ nhớ cho việc khác.
- Nếu một activity ở trạng thái paused hay stopped, hệ thống có thể loại nó ra khỏi bộ nhớbằng cách yêu cầu nó kết thúc (gọi phương thức finish() của nó), hoặc đơn giản là kill tiến trình của nó.
Trang 5- Khi nó lại được hiển thị trở lại cho người dùng, nó phải được bật lại (restart) từ đầu và khôi phục về trạng thái cũ.
- Khi một activity chuyển trạng thái, nó được hệ thống thông báo về sự thay đổi đó bằng các lời gọi tới các phương thức
Câu 5: Kiến trúc ARM, ARM64 và x86 là gì?
Trả lời:
- ARM (Acorn RISC Machine) là một kiến trúc vi xử lý RISC (Reduced Instruction Set Computing).
+ Thường được sử dụng trong nhiều thiết bị di động như điện thoại thông minh, máy tính bảng, smartwatch, và nhiều thiết bị IoT (Internet of Things) + Các phiên bản thường gặp bao gồm ARMv7, ARMv8-A (64-bit) - ARM64 là phiên bản 64-bit của kiến trúc ARM.
+ Được thiết kế để cung cấp hiệu suất và khả năng mở rộng tốt hơn so với phiên bản 32-bit.
+ Thường được sử dụng trong các thiết bị di động và máy tính có hiệu suất cao - x86 là một kiến trúc vi xử lý CISC (Complex Instruction Set Computing).
+ Phổ biến trong máy tính cá nhân và máy chủ.
+ Các dòng vi xử lý phổ biến bao gồm Intel x86 và AMD x86.
Câu 6: Tại sao bytecode không chạy được trong android? Android sử dụng máy ảo nào để thực thi chương trình? Giới thiệu về máy ảo đó?
Trả lời:
Bytecode không chạy trực tiếp trên Android vì Android sử dụng Dalvik Virtual Machine (DVM) hoặc từ phiên bản Android 5.0 trở đi, sử dụng Android Runtime (ART) thay thế.
1 Dalvik Virtual Machine (DVM):
DVM được sử dụng trước Android 5.0 (KitKat và trước đó) DVM chuyển đổi mã nguồn Java thành mã bytecode Dalvik (.dex) Mỗi ứng dụng Android chạy trên một instance riêng biệt của DVM DVM tối ưu cho các thiết bị di động với tài nguyên hạn chế 2 Android Runtime (ART):
ART được giới thiệu từ Android 5.0 (Lollipop) và làm chính thức từ Android 6.0 (Marshmallow).
ART chuyển đổi mã nguồn Java thành mã máy trực tiếp (Ahead-of-Time Compilation) thay vì mã bytecode như DVM.
ART cung cấp hiệu suất cao hơn và tiết kiệm năng lượng hơn so với DVM ART hỗ trợ Just-In-Time (JIT) compilation và Ahead-of-Time (AOT) compilation.
Máy ảo trong trường hợp của Android (DVM hoặc ART) đảm bảo rằng ứng dụng có thể chạy trên nhiều thiết bị với kiến trúc khác nhau mà không cần biên dịch lại từng ứng
Trang 6dụng cho từng loại thiết bị Máy ảo này giúp tối ưu hóa hiệu suất và quản lý tài nguyên trong môi trường di động.
Câu 7: Mô tả chi tiết Quá trình build một ứng dụng Android?
Trả lời:
Khởi chạy Android Studio → Start a new Android Studio project:
- Application name: là tên của ứng dụng.
- Company Domain: là tên domain của công ty kết hợp với tên của ứng dụng để tạo ra package.
- Pakage name: Tên của gói ứng dụng của bạn - Project location: Nơi lưu trữ ứng dụng của bạn Xuất hiện hô ‚p thoại chọn thiết bị (device):
- Minimum SDK là phiên bản thấp nhất được chỉ định để chạy ứng dụng và một số các phương thức API sẽ được gọi bổ sung trong phần thư viện hỗ trợ Hô ‚p thoại nhập thông tin của Activity:
- Activity Name: Tên lớp lưu giữ mã nguồn.
- Layout Name: Tên tập tin XML làm giao diện cho Activity Name.
Câu 8: Kiến trúc Android gồm những thành phần nào?
Trả lời:
Trang 7Mỗi ứng dụng Android chủ yếu được xây dựng từ ba loại thành phần chính: Activities (hoạt động), Services (dịch vụ), và Content Providers (cung cấp nội dung) Ngoài ra, còn có Broadcast Receivers (trình nhận broadcast) để xử lý thông điệp từ hệ thống hoặc các ứng dụng khác.
Câu 9: Giới thiệu các Launch mode trong Android?
Trả lời:
Ở Android, "launch mode" là cách mà một activity trong ứng dụng xử lý việc khởi động và quản lý các instance của nó Dưới đây là một số launch mode phổ biến:
1 Standard: Đây là launch mode mặc định Mỗi lần bạn khởi chạy activity, một instance mới của nó sẽ được tạo ra, ngay cả khi activity đó đã tồn tại.
2 SingleTop: Nếu activity đã tồn tại trên đỉnh của ngăn xếp (stack), nó sẽ được sử dụng lại thay vì tạo ra một instance mới Nếu activity không ở trên đỉnh, nó sẽ được tạo mới.
3 SingleTask: Nếu activity đã tồn tại trong ngăn xếp, tất cả các activity trên đỉnh của nó sẽ bị xóa khỏi ngăn xếp và nó sẽ được sử dụng lại Nếu activity không tồn tại, nó sẽ được tạo mới và đặt ở đỉnh.
4 SingleInstance: Chỉ có một instance của activity này có thể tồn tại trong hệ thống Nó sẽ ở trong một ngăn xếp khác biệt và không chia sẻ ngăn xếp với các activity khác.
Các launch mode này giúp bạn kiểm soát cách các activity tương tác với nhau và quản lý việc tạo mới hay sử dụng lại các instance.
Câu 10: Nêu quy trình các phương thức/hàm xử lý khi truyền dữ liệu qua kỹ thuật RMI?
Trả lời:
1 Tạo 1 lớp giao diện.Ví dụ: HelloInterface.java
2 Tạo lớp hiện thực mô tả các phương thức của lớp giao diện o Ví dụ: HelloImplement.java
3 Xây dựng chương trình Server:
- Tạo đối tượng RemoteObject từ lớp Implement đăng ký đối tượng với máyJVM:
o UnicastRemoteObject.exportObject(RemoteObject); - Đăng ký đối tượng với rmiregistry:
o Naming.bind(“rmi:///tên RemoteObject”,RemoteObject); 4 Xây dựng chương trình Client:
- Tạo một đối tượng Obj tham chiếu đến đối tượng từ xa thông qua: o Naming.lookup(“rmi /tênRemoteObject”);
5 Biên dịch tạolớp Stub,Skel:o rmic <tên lớp implement>6 Biên dịch chương trình Client,Server,…
Trang 87 Chạy chương trình:- Chạy rmiregistry.- Chạy server.- Chạy client.
Trang 9- Thêm nhân viên - Xóa nhân viên - Sửa thông tin nhân viên - Hiển thị danh sách nhân viên - Cập nhật nhân viên - Cập nhật chức vụ nhân viên - Tìm kiếm nhân viên.
Phiên bản Android: Android Gradle Plugin 7.2.2
Trả lời: Chương trình gồm các file sau (nếu có nhiều file thì liệt kê đầy đủ các file mà SV đã code, chỉ liệt kê những file mà sinh viên có thao tác)
File Class Adapter
Trang 10@NonNull List<Nhanvien> objects;
public AdapterNV(@NonNull Activity context, int resource, @NonNull List<Nhanvien> objects) { super(context, resource, objects);
this.objects = objects; this context = context; this resource = resource;
}
@NonNull @Override public View getView(int position, @Nullable View row, @NonNull ViewGroup parent) { LayoutInflater layoutInflater = this.context.getLayoutInflater(); row = layoutInflater.inflate(this.resource, null); ImageView _img = row.findViewById(R.id.img) ; TextView _profile = row.findViewById(R.id.profile); CheckBox _checkbox1 = row.findViewById(R.id.checkbox1); Nhanvien nhanvien = this.objects.get(position);
Trang 11File Class MainActivity
public boolean onCreateOptionsMenu(Menu menu) { ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("Quản Lý Nhân Viên");
Trang 12dsNhanvien.add (new Nhanvien("NV1", "Pham Quoc Huy", false)); dsNhanvien.add (new Nhanvien("NV2", "Tran Van Hai", true)); dsNhanvien.add (new Nhanvien("NV3", "Bui Duy Dat", false));
dsNhanvien.add (new Nhanvien("NV4", "Nguyen Vuong Quoc Khanh", false)); dsNhanvien.add (new Nhanvien("NV5", "Tran Quoc Bi", true));
dsNhanvien.add (new Nhanvien("Boss", "Le Nguyen Duy Bao", true));
adapterNV = new AdapterNV (MainActivity.this,R.layout.items_viewnhanvien,dsNhanvien);
Trang 16Giao diện View_Design
items_viewnhanvien:
Trang 17Video giới thiệu các chức năng trong ứng dụng: