2.3.4.1. Chạy chương trình
Sau bước biên dịch, ứng dụng sẽ được đóng gói thành tập tin .apk. Đồng thời dựa vào loại thiết bị/ emulator, file .apk sẽ được tải và cài đặt vào thiết bị android được chọn. Tại thời điểm chạy ứng dụng (runtime): đầu tiên phương thức OnCreate() của activity được thực thi cho phép giao diện ứng dụng được kết nối vào activity qua hàm setContentView().
Hình 1.45. Ứng dụng Hello chạy trên Android Virtual Device
launcher để xem danh sách các ứng dụng được cài đặt trên thiết bị, trong đó có ứng dụng SampleProject vừa tạo.
Hình 1.46. Ứng dụng Hello cài đặt trên AVD.
2.3.4.2.Gỡ lỗi (debug)
Công cụ Android Studio Debugger cho phép theo dõi ứng dụng theo thời gian thực. Ngoài ra nó còn cung cấp thêm thông tin về thiết bị đã kết nối hoặc máy ảo đang được sử dụng.
Breakpoint
Breakpoint là một thuật ngữ lập trình có nghĩa là vị trí ở dòng code nào mà ta muốn chương trình khi sẽ dừng tại đó.
Chúng ta có thể chèn thêm một breakpoint (hoặc nhiều breakpoint tùy ý muốn) ở vị trí nào mà chúng ta muốn chương trình khi chạy đến đấy thì dừng lại. Có nhiều cách để thêm breakpoint.
Cách thêm Breakpoint
Click vào vị trí muốn thêm breakpoint. Sau đó chọn Run > Toggle Line Breakpoint. Một vòng tròn màu đỏ sẽ xuất hiện trực tiếp ngay bên trái của dòng code này. Vùng vòng tròn màu đỏ này nằm trong người ta gọi là gutter.
Hình 1.47. Ví dụ về thêm Breakpoint
Để xóa điểm breakpoint, có thể chọn dòng tương tự, sau đó chọn Run > Toggle Line Breakpoint một lần nữa để tắt nó đi. Hoặc đơn giản là click đúp vào vòng tròn đỏ.
Cách sử dụng Breakpoints
Sau đó, có thể chạy debug bằng cách chọn icon “Debug” ở trên thanh công cụ. Việc này sẽ chạy ứng dụng ở chế độ debug lên thiết bị hay máy ảo.
Hình 1.48. Debug
Một khi ứng dụng chạy, bạn mở đến màn hình ứng dụng mà dòng code được đặt breakpoint trước đó có thể được gọi. Nếu dòng code đó được thực hiện, ứng dụng sẽ dừng lại và màn hình console debuger sẽ xuất hiện.
Hình 1.49. Giao diện Debug
Khi ứng dụng dừng lại tại breakpoint, để có thể kiểm tra giá trị của các biến thì chúng ta có một cách. Cách đơn giản là di chuột qua các biến để thấy các giá trị hiện tại của nó:
Hình 1.50. Chi tiết Debug
Nếu chúng ta click vào biểu tượng “+” ở bên trái của cửa sổ màu vàng xuất hiện khi chúng ta di chuột qua một biến, chúng ta có thể xem thêm chi tiết hơn
Điều hướng các dòng code khi debug
Không chỉ cần xem tại vị trí debug, ta cần xem code chạy có đúng không. Do đó cần phải xem chi tiết các bước trong Debug.
Hình 1.51. Các nút cần nhớ khi Debug 1. Nút hiển thị Breakpoint đang active
Nút này có tác dụng đặt con trỏ trở lại vào vị trí mà đang debug lỗi. 2. Step Over
Nút này sẽ giúp debug nhảy xuống dòng code tiếp theo 3. Step Into
Nút này sẽ nhảy vào bên trong hàm 4. Force Step Into
Nút này sẽ cho phép nhảy thẳng đến dòng đầu tiên bên trong của hàm được gọi 5. Thoát ra ngoài
Nhảy ra khỏi hàm đang debug.
6. Tiếp tục chương trình(Resume Program)
Nút này sẽ tiếp tục chạy ứng dụng một cách bình thường. Tạm thời bỏ qua debug 7. Tạm dừng chương trình(Pause Program)
Nút này sẽ được greyed-out trước tiên bởi vì chương trình đã sẳn sàng tạm dừng. Nếu bạn chọn tiếp tục chương trình, bạn sẽ tạm dừng nó lại với tùy chọn này.
8. Dừng ứng dụng (Stop App)
Hiểu nôm na là tắt ứng dụng và không debug nữa. 9. Xem các Breakpoints
Nút này sẽ mở một cửa sổ hiển thị các tất cả breakpoint đã được chèn. Ngoài ra, nó cho phép tinh chỉnh cài đặt cho từng breakpoint riêng biệt.
10. Mute Breakpoint
Tùy chọn này giúp cho có thể bật – tắt tạm thời tất cả các breakpoint.
CÂU HỎI CHƯƠNG 1
1. Viết chương trình Java tính tổng các số chẵn nằm trong khoảng 1 đến N rồi in ra kết quả, với N được nhập từ bàn phím.
2. Viết chương trình Java hiển thị tổng các bội số của 7 nằm giữa 1 và 200. 3. Viết chương trình Java đưa ra màn hình các số nguyên <60 theo định dạng
4. Viết một chương trình quản lí nhân viên của một công ty. Bao gồm các lớp chính:
• Lớp Human là một lớp trừu tượng, chỉ có một phương thức duy nhất là show().
• Lớp Person là lớp kế thừa từ lớp Human, có hai thuộc tính là tên (name) và tuổi (age). Để đóng gói dữ liệu các thuộc tính này có dạng private và các phương thức truy nhập chúng (get và set). Ngoài ra lớp này còn cài đặt phương thức show() kế thừa từ lớp trừu tượng Human.
• Lớp Employee là lớp kế thừa từ lớp Person, có thêm thuộc tính là lương (salary). Thuộc tính này cũng có dạng private để đóng gói dữ liệu và cần các phương thức truy nhập get/set. Lớp này cài đặt lại phương thức show(). Hơn nữa, lớp Employee có thêm hai phương thức addSalary() và addSalary(float) để tính tăng lương cho nhân viên: một phương thức tăng lương theo tỉ lệ mặc định là 10% (không cần tham số), và một phương thức tăng theo giá trị cụ thể đưa vào (cần tham số).
5. Nêu kiến trúc của hệ điều hành Android, các thành phần tạo nên ứng dụng Android.
6. Viết ứng dụng Android tính tổng, hiệu, tích, thương cho 2 số nguyên theo quy trình lập trình ứng dụng di động.
CHƯƠNG 2: LẬP TRÌNH ỨNG DỤNG ANDROID CƠ BẢN
Nội dung chương này tập trung trình bày về các kỹ thuật lập trình ứng dụng di động cơ sở trên nền tảng Android sử dụng ngôn ngữ Java. Nội dung trình bày bao gồm:
- Lập trình quản lý vòng đời ứng dụng di động. - Lập trình giao diện ứng dụng di động.
- Lập trình quản lý dữ liệu.