Báo cáo thực tập tốt nghiệp doanh nghiệp samsung, Trong suốt thời gian học tập và rèn luyện tại Học viện Công nghệ Bưu chính Viễn thông cho đến nay, là sinh viên ngành Công nghệ thông tin, em đã nhận được rất nhiều sự quan tâm, giúp đỡ, dìu dắt của quý thầy cô và bạn bè. Với lòng biết ơn sâu sắc và chân thành nhất, em xin gửi đến các thầy cô ở Khoa Công nghệ thông tin của Học viện đã truyền đạt kiến thức và kinh nghiệm cho em trong suốt khoảng thời gian học tập và rèn luyện tại đây. Trong học kỳ này, nhận được sự đồng ý của khoa Công nghệ thông tin và Samsung RD Center Vietnam (SRV), em đã được tham gia chương trình thực tập tốt nghiệp cho sinh viên tại trung tâm. Đây là hành trang vô cùng quý báu để em tiếp tục phát triển sự nghiệp của bản thân trong tương lai.
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN - - BÁO CÁO THỰC TẬP TỐT NGHIỆP Đơn vị: Samsung R&D Center Vietnam Giảng viên hướng dẫn: Sinh viên thực hiện: Mã sinh viên: Lớp: Hà Nội, 2023 LỜI MỞ ĐẦU Trong suốt thời gian học tập rèn luyện Học viện Cơng nghệ Bưu Viễn thơng nay, sinh viên ngành Công nghệ thông tin, em nhận nhiều quan tâm, giúp đỡ, dìu dắt q thầy bạn bè Với lịng biết ơn sâu sắc chân thành nhất, em xin gửi đến thầy cô Khoa Công nghệ thông tin Học viện truyền đạt kiến thức kinh nghiệm cho em suốt khoảng thời gian học tập rèn luyện Trong học kỳ này, nhận đồng ý khoa Công nghệ thông tin Samsung R&D Center Vietnam (SRV), em tham gia chương trình thực tập tốt nghiệp cho sinh viên trung tâm Đây hành trang vô quý báu để em tiếp tục phát triển nghiệp thân tương lai Em xin chân thành cảm ơn ThS, thầy tận tâm hướng dẫn em bạn suốt tập Bên cạnh đó, em xin bày tỏ biết ơn Ban lãnh đạo Samsung R&D Center Vietnam (SRV), nhờ có giúp đỡ nhiệt tình anh chị phòng ban, tạo điều kiện thuận lợi cho em suốt thời gian thực tập công ty Em xin chân thành cảm ơn! Hà Nội ngày 07 tháng 07 năm 2023 Sinh viên thực i NHẬN XÉT KẾT QUẢ THỰC TẬP MỤC LỤC LỜI MỞ ĐẦU .i NHẬN XÉT KẾT QUẢ THỰC TẬP .ii DANH MỤC CÁC TỪ VIẾT TẮT iv DANH MỤC HÌNH ẢNH v PHẦN I: BÁO CÁO THỰC TẬP TẠI CÔNG TY CHƯƠNG I: TỔNG QUAN VỀ ĐƠN VỊ THỰC TẬP .1 1.1 Giới thiệu đơn vị thực tập 1.2 Lịch sử hình thành phát triển .1 1.3 Nhiệm vụ CHƯƠNG II: QUÁ TRÌNH THỰC TẬP .3 2.1 Lịch trình thực tập .3 2.2 Giải pháp thực 2.3 Nội dung thực tập 2.4 Kết thực .12 ii KẾT LUẬN CHUNG .13 TÀI LIỆU THAM KHẢO .14 iii DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt SRV Viết đầy đủ Samsung R&D Center Giải thích nghĩa Trung tâm nghiên cứu phát Vietnam triển Samsung Việt Nam iv DANH MỤC HÌNH ẢNH Hình Tịa nhà Samsung R&D Center Vietnam Hình Buổi lễ trao tặng giấy chứng nhận hoàn thành khóa thực tập 13 v PHẦN I: BÁO CÁO THỰC TẬP TẠI CÔNG TY CHƯƠNG I: TỔNG QUAN VỀ ĐƠN VỊ THỰC TẬP 1.1 Giới thiệu đơn vị thực tập Tên đơn vị: Trung tâm Nghiên cứu Phát triển Samsung Việt Nam Tên tiếng anh: Samsung R&D Center Vietnam Tên viết tắt: SRV Địa chỉ: Tòa nhà Samsung, Đ Hoàng Minh Thảo, KĐT Tây Hồ Tây, Q Bắc Từ Liêm, Hà Nội Hình Tòa nhà Samsung R&D Center Vietnam 1.2 Lịch sử hình thành phát triển Tiền thân SRV SVMC (Samsung Vietnam Mobile R&D Center) – đơn vị dẫn đầu phát triển phần mềm, nghiên cứu phát triển mạng 4G 5G Việt Nam bán cho nhà mạng di động Năm 2022, SVMC chuyển sở Xuân Đỉnh, Tây Hồ, Hà Nội đổi tên thành SRV Lễ khánh thành SRV vào tháng 12/2022 vinh dự đón Thủ tướng Phạm Minh Chính tới tham dự SVMC thành lập vào năm 2012 với mục tiêu sử dụng nguồn nhân lực có kỹ khả công nghệ Việt Nam để thúc đẩy đổi ngành công nghiệp di động Từ thành lập, SVMC đóng vai trò quan trọng việc phát triển thiết bị di động Samsung Trung tâm chịu trách nhiệm thiết kế phát triển thành phần tính điện thoại thông minh Samsung, bao gồm phần mềm, phần cứng cải tiến trải nghiệm người dùng SVMC tiến hành nghiên cứu kiểm tra để đảm bảo chất lượng hiệu suất sản phẩm di động Samsung Trong suốt thời gian qua, SVMC phát triển mạnh mẽ quy mô phạm vi hoạt động Trung tâm mở rộng khả nghiên cứu phát triển, thu hút nhân tài hàng đầu lĩnh vực công nghệ di động Sự phát triển cho phép SVMC đóng góp vào việc phát triển công nghệ sản phẩm di động tiên tiến cho Samsung Sự diện SVMC Việt Nam khơng mang lại lợi ích cho Samsung mà cịn góp phần phát triển kinh tế địa phương Trung tâm tạo nhiều hội việc làm đóng góp vào phát triển ngành cơng nghệ đất nước Ngồi ra, SVMC cịn tích cực tham gia hoạt động trách nhiệm xã hội doanh nghiệp, hỗ trợ cộng đồng địa phương thúc đẩy phát triển bền vững 1.3 Nhiệm vụ Lĩnh vực hoạt động: nghiên cứu phát triển sản phẩm phần mềm phần cứng cho thiết bị: Điện thoại thơng minh, máy tính bảng, đồng hồ thơng minh Với nhóm lĩnh vực chính: - Phát triển phần mềm thương mại cho thiết bị thông minh Samsung, đáp ứng tốt nhu cầu khắt khe thị trường cung cấp gói phần mềm tốt cho khu vực - Nghiên cứu phát triển giải pháp phần mềm dịch vụ tiên tiến người dùng Samsung cho doanh nghiệp hướng tới đối tượng khách hàng toàn cầu, tầm nhìn trở thành nhà cung cấp dịch vụ phần mềm hàng đầu giới - Đánh giá đảm bảo chất lượng gói phần mềm mạng, máy chủ cho hệ thống mạng 4G/5G Samsung triển khai tới khách hàng tồn cầu, thơng qua cơng cụ tự động hóa thơng minh - Nghiên cứu thiết kế phần cứng, khí cho thiết bị thơng minh dịng sản phẩm hàng đầu Samsung, đồng thời hỗ trợ cho quy trình sản xuất phần cứng chuyên sâu nhà máy SEV/T Việt Nam CHƯƠNG II: QUÁ TRÌNH THỰC TẬP 2.1 Lịch trình thực tập Chương trình thực tập sinh Summer Intership 2023 Samsung SRV có đợt vào tháng 06, 07, 08 năm 2023 Em đăng ký tham gia vào đợt tháng 06 năm 2023 Thời gian thực tập kéo dài 04 tuần 05/06 đến hết ngày 30/06 Thời gian thực tập tuần từ thứ đến thứ 6, buổi sáng 8h30, nghỉ trưa lúc 12h, buổi chiều 13h kết thúc ngày làm việc lúc 17h30 Thời gian Nội dung Tuần (05/06 - 09/06) - 05/06: Giới thiệu công ty quy định, nhận máy tính - Từ 06 đến 09/06: + Ôn tập kiến thức kiểu liệu Java + Thực luyện tập server Tuần (12/06 – 16/06) - Từ 12/06 đến 15/06: + Học lý thuyết Stack, Queue cách triển khai Java + Thực luyện tập server - 16/06: Tham gia thi IM Tuần (19/06 – 23/06) - 19/06: + Phân nhóm chọn đề tài mini project + Cài đặt phần mềm Android Studio - Từ 20/06 đến 23/06: + Giới thiệu Lập trình Android + Một số thành phần bản: Fragment, Intent, View, Layout + Áp dụng xây dựng cho mini project Tuần (26/06 – 30/06) - Từ 26/06 đến 28/06: + Học cách lưu trữ liệu, notification, service, async task, thread android + Áp dụng hoàn thành mini project + Làm slide báo cáo miniproject - 29/06: Báo cáo mini project - 30/06: Tham quan số sở vật chất trung tâm dự lễ trao chứng nhận 2.2 Giải pháp thực Trong trình thực tập trung tâm: - Việc đào tạo thực phòng đào tạo Venus tầng trung tâm - Các phần mềm phục vụ việc đào tạo: Eclipse, Microsoft Visual Studio, Android Studio - Việc luyện tập thực server trung tâm - Việc ăn trưa thực nhà ăn tầng trung tâm 2.3 Nội dung thực tập 2.3.1 Các kiểu liệu Trong Java có loại kiểu liệu: Primitive Data Types Non-Primitive Data Types - - - - Với Primitive Data Types, ta có kiểu liệu: Kiểu Boolean: sử dụng lưu trữ cho giá trị: true false Múc đích kiểu Boolean thường dùng cho câu điều kiện rẽ nhánh Kiểu Byte: dùng để lưu trữ số nguyên có kích cỡ byte (8 bit) Giá trị lưu nằm khoảng từ -128 (-2^7) đến 127 (2^7-1) Kiểu Short: dùng để lưu trữ kiểu số ngun có kích cỡ byte (16 bit) Giá trị lưu nằm khoảng từ -32,768 (-2^15) đến 32,767 (2^15 – 1) Kiểu Int: dùng để lưu trữ kiểu số ngun có kích cỡ byte (32 bit) Giá trị lưu nằm khoảng từ -2,147,483,648 (-2^31) đến 2,147,483,647 (2^31 – 1) Kiểu Long: dùng để lưu trữ kiểu số nguyên có kích cỡ byte Giá trị lưu nằm khoảng từ -9,223,372,036,854,775,808 (-2^63) đến 9,223,372,036,854,775,807 (2^63-1) Giá trị gán cần có kí tự “l” phía sau Kiểu Float: dùng để lưu trữ số thực có kích cỡ byte (32 bit) Giá trị lưu nằm khoảng từ -3.4028235 x 10^38 đến -3.4028235 x 10^38 Giá trị gán cần có kí tự ‘f’ phía sau Kiểu Double: dùng để lưu trữ số thực có kích cỡ byte (64 bit) Giá trị lưu nằm khoảng từ -1.7976931348623157 x 10^308 đến 1.7976931348623157 x 10^308 Giá trị gán có khơng kí tự ‘d’ phía sau 2.3.2 Mảng Java: Mảng (array) tập hợp phần tử có kiểu lưu trữ gần nhớ Mảng java đối tượng chứa phần tử có kiểu liệu giống Mảng cấu trúc liệu nơi lưu trữ phần tử giống Với mảng java lưu trữ tập phần tử có số lượng phần tử cố định Mảng java lưu phần tử theo số, số phần tử Mảng mảng chiều mảng đa chiều * Khởi tạo mảng Java: Để khai báo mảng Java, khai báo loại biến với dấu ngoặc vuông: dataType[] arr; dataType arr[]; dataType []arr; Để chèn giá trị vào nó, sử dụng mảng chữ - đặt giá trị danh sách phân tách dấu phẩy, bên dấu ngoặc nhọn: VD: String[] cars = {“BMW”, “Honda”, “Ford”}; * Truy cập phần tử: Để truy cập phần tử mảng, ta sử dụng mục (index) VD: cars[0] // BMW * Thay đổi phần tử mảng: Ta sử dụng mục (index) VD: cars[0] = “Morning”; * Độ dài mảng: Ta sử dụng thuộc tính length VD: cars.length //3 * Duyệt phần tử mảng: Sử dụng vịng lặp for: Bạn lặp qua phần tử mảng vòng lặp for sử dụng thuộc tính length để định số lần vòng lặp chạy VD: for (int i = 0; i < cars.length; i++){ System.out.println(cars[i]); } Sử dụng forEach: VD: for (String car: cars){ System.out.println(car); } 2.3.3 Stack cách triển khai Stack mọt cấu trúc liệu đơn giản sử dụng để lưu trữ liệu Stack danh sách có thứ tự việc chèn xóa thực đầu, gọi top – đỉnh Phần tử cuối chèn phần tử bị xóa Do đó, gọi Last in First out (LIFO) Một số phương thức stack: push(int data): Thêm data vào stack int pop(): Xóa return phần tử chèn cuối từ stack int top(): Trả phần tử chèn cuối từ stack int size(): Trả kích cỡ stack int isEmpty(): Kiểm tra stack có rỗng khơng int isFull(): Kiểm tra stack đầy chưa 2.3.4 Queue cách triển khai Queue cấu trúc liệu sử dụng để lưu trữ liệu Hàng đợi (Queue) danh sách có thứ tự việc thêm thực đầu (phía sau) việc xóa thực đầu (phía trước) Phần từ thêm phần tử bị xóa Do đó, gọi First in First Out (FIFO) Một số phương thức Queue: void enQueue(int value): Chèn phần tử vào hàng đợi int deQueue(): Xóa phần tử khỏi hàng đợi int Qpeek(): Trả phần tử khơng xóa int size(): Trả số phần tử lưu trữ hàng đợi int isEmpty(): Kiểm tra xem hàng đợi có lưu phần tử không 2.3.5 Tổng quan Android Programing Android programming trình phát triển ứng dụng di động sử dụng tảng Android Nền tảng Android phát triển Google sử dụng rộng rãi thiết bị di động điện thoại thông minh máy tính bảng Android programming sử dụng ngơn ngữ lập trình Java Kotlin để xây dựng ứng dụng Java ngơn ngữ lập trình thức Android nhiều năm, Kotlin ngôn ngữ hỗ trợ thức Google từ năm 2017 Các ứng dụng Android xây dựng cách sử dụng Android Studio, môi trường phát triển tích hợp (IDE) thiết kế đặc biệt cho việc phát triển ứng dụng Android Android Studio cung cấp công cụ tài nguyên cần thiết để xây dựng, kiểm tra triển khai ứng dụng thiết bị Android Android programming cung cấp khả phong phú để tạo ứng dụng đa dạng, bao gồm giao diện người dùng tương tác, quản lý liệu, kết nối mạng, tích hợp với dịch vụ bên ngồi nhiều tính khác Các ứng dụng Android phát triển cho nhiều mục đích, từ giải trí trị chơi ứng dụng doanh nghiệp giáo dục 2.3.6 Fragment, Layout, Intent, View Android Programing * Fragment: Fragment thành phần quan trọng Android programming, cho phép chia nhỏ giao diện người dùng thành phần nhỏ để quản lý tái sử dụng dễ dàng Mỗi Fragment chứa phần giao diện người dùng thêm xóa khỏi Activity mà không ảnh hưởng đến Fragment khác Các điểm Fragment Android programming bao gồm: - Quản lý giao diện người dùng: Fragment giúp quản lý giao diện người dùng cách dễ dàng Chúng thêm, xóa thay đổi cách linh hoạt Activity - Tái sử dụng: Fragment cho phép tái sử dụng phần giao diện người dùng Chúng sử dụng nhiều Activity khác nhau, giúp giảm thiểu việc viết mã lặp lại - Quản lý trạng thái: Fragment lưu trữ khơi phục trạng thái Activity bị hủy quay lại - Giao tiếp Fragment: Fragment giao tiếp với thơng qua Activity chứa chúng Điều cho phép truyền liệu thực hành động Fragment - Hỗ trợ đa cửa sổ: Fragment hỗ trợ việc phát triển ứng dụng đa cửa sổ thiết bị có hình lớn Chúng xếp hiển thị lúc hình * Layout: Layout Android Programming cách để xác định xếp phần tử giao diện người dùng hình Nó sử dụng để định nghĩa vị trí, kích thước thuộc tính khác phần tử giao diện TextView, Button, ImageView, nhiều Các điểm layout Android Programming bao gồm: - XML: Layout định nghĩa cách sử dụng XML (Extensible Markup Language), ngôn ngữ đánh dấu cấu trúc liệu XML cho phép phân tách giao diện người dùng mã logic - ViewGroup: Layout loại ViewGroup, lớp base cho lớp chứa phần tử giao diện khác Một ViewGroup chứa nhiều View ViewGroup khác - Các loại layout: Android cung cấp nhiều loại layout khác để xếp phần tử giao diện Một số loại layout phổ biến bao gồm LinearLayout, RelativeLayout, ConstraintLayout, FrameLayout Mỗi loại layout có cách xếp thuộc tính riêng - Thuộc tính layout: Layout tùy chỉnh cách sử dụng thuộc tính Các thuộc tính layout cho phép bạn xác định vị trí, kích thước, margin, padding, thuộc tính khác phần tử giao diện - Tính linh hoạt: Layout cho phép tạo giao diện người dùng linh hoạt cho thiết bị có hình khác Các layout tự động điều chỉnh kích thước vị trí phần tử để phù hợp với hình * Intent: Intent thành phần quan trọng Android Programming, sử dụng để giao tiếp thành phần khác ứng dụng Android Nó cho phép chuyển đổi từ Activity sang Activity khác, gửi nhận liệu, thực hành động khác Các điểm Intent Android Programming bao gồm: - Chuyển đổi Activity: Intent sử dụng để chuyển đổi Activity ứng dụng Android Nó cho phép khởi chạy kết thúc Activity truyền liệu chúng - Gửi nhận liệu: Intent cho phép gửi nhận liệu thành phần khác ứng dụng Bạn truyền liệu dạng thông tin đơn giản (như chuỗi, số nguyên) liệu phức tạp (như đối tượng Parcelable Serializable) - Khởi chạy dịch vụ: Intent sử dụng để khởi chạy tương tác với dịch vụ ứng dụng Android Bạn sử dụng Intent để gọi phương thức dịch vụ gửi liệu đến - Thực hành động: Intent sử dụng để thực hành động gửi email, gọi điện thoại, mở trình duyệt, nhiều Bạn sử dụng Intent để kích hoạt ứng dụng hành động khác thiết bị Android - Implicit explicit Intent: Intent sử dụng dạng implicit explicit Implicit Intent không định rõ thành phần mục tiêu mà thay vào định hành động loại liệu mà ứng dụng mong muốn thực Explicit Intent định rõ thành phần mục tiêu mà ứng dụng muốn chuyển đến * View View Android Programming thành phần giao diện người dùng Nó đại diện cho phần tử TextView, Button, EditText, ImageView nhiều phần tử khác View đối tượng có khả hiển thị thông tin tương tác với người dùng Các điểm View Android Programming bao gồm: - Hiển thị thông tin: View sử dụng để hiển thị thơng tin cho người dùng Ví dụ: TextView sử dụng để hiển thị văn bản, ImageView sử dụng để hiển thị hình ảnh - Tương tác người dùng: View cho phép người dùng tương tác với ứng dụng Ví dụ: Button sử dụng để xử lý kiện người dùng nhấn vào nút - Cấu trúc phân cấp: View phân cấp theo cấu trúc Mỗi View chứa nhiều View View cha View khác - Thuộc tính phương thức: Mỗi View có thuộc tính phương thức riêng để tùy chỉnh điều khiển hiển thị hành vi Ví dụ: thuộc tính textColor để đặt màu chữ TextView - Sự kiện lắng nghe: View lắng nghe xử lý kiện nhấn nút, vuốt, chạm vào hình nhiều - Tính tương thích: View thiết kế để hoạt động nhiều thiết bị Android khác nhau, từ điện thoại thơng minh đến máy tính bảng TV 2.3.7 Lưu trữ liệu Android Programing Trong Android Programming, có hai phương pháp phổ biến để lưu trữ liệu: Shared Preferences SQLite * Shared Preferences: Shared Preferences chế đơn giản để lưu trữ truy xuất liệu nhỏ Android Đây cách tiện lợi để lưu trữ cài đặt người dùng tùy chọn, trạng thái ứng dụng, v.v Dữ liệu lưu trữ dạng cặp key-value, với key chuỗi value số nguyên, số thực, boolean chuỗi Shared Preferences không phù hợp cho việc lưu trữ liệu lớn phức tạp * SQLite: SQLite sở liệu quan hệ nhẹ mạnh mẽ tích hợp sẵn Android Nó cung cấp cách để lưu trữ truy xuất liệu có cấu trúc ứng dụng Android SQLite sử dụng ngôn ngữ truy vấn SQL để thực thao tác tạo, đọc, cập nhật xóa liệu Với SQLite, bạn lưu trữ liệu phức tạp thực truy vấn phức tạp Khi sử dụng Shared Preferences, liệu lưu trữ nhớ ứng dụng truy xuất cần thiết Tuy nhiên, Shared Preferences không phù hợp cho việc lưu trữ liệu lớn phức tạp Khi sử dụng SQLite, liệu lưu trữ sở liệu riêng biệt truy xuất, xếp lọc cách sử dụng câu lệnh SQL SQLite cho phép bạn thực truy vấn phức tạp lưu trữ liệu lớn Tùy thuộc vào yêu cầu ứng dụng, bạn chọn sử dụng Shared Preferences SQLite để lưu trữ liệu Android Programming 2.3.8 Notification Broadcast Service Android Programing * Notification Trong Android Programming, Notification thành phần quan trọng để hiển thị thông báo đến người dùng từ ứng dụng Notification cho phép ứng dụng gửi thông báo cho người dùng mà khơng cần mở ứng dụng Thơng báo chứa thông tin cập nhật, tin nhắn, gọi đến, v.v người dùng tương tác với thông báo để thực hành động mở ứng dụng, xem tin nhắn, trả lời gọi, v.v Để tạo thông báo Android, bạn cần sử dụng lớp NotificationManager lớp NotificationCompat.Builder Dưới bước để tạo thơng báo: - Xây dựng NotificationCompat.Builder: Bạn cần tạo đối tượng NotificationCompat.Builder để xây dựng thơng báo Bạn cung cấp thơng tin tiêu đề, nội dung, biểu tượng, âm thanh, v.v cho thông báo - Thiết lập hành động: Bạn thêm hành động cho thơng báo, cho phép người dùng tương tác với thơng báo Ví dụ: mở ứng dụng, trả lời tin nhắn, v.v - Xây dựng thông báo: Sử dụng phương thức build() NotificationCompat.Builder để xây dựng thông báo - Hiển thị thông báo: Sử dụng NotificationManager để hiển thị thông báo Bạn cần cung cấp ID cho thông báo để cập nhật hủy bỏ sau Thơng báo hiển thị thơng báo dạng pop-up, tùy thuộc vào loại thông báo thiết lập người dùng Notification cách tiện lợi để cung cấp thông tin cho người dùng mà khơng cần mở ứng dụng Bạn tùy chỉnh thơng báo để tương thích với giao diện người dùng cung cấp hành động cho người dùng tương tác * Broadcast Service Trong Android Programming, Broadcast Service thành phần quan trọng để gửi nhận thông điệp (broadcast) thành phần khác hệ thống ứng dụng Broadcast Service cho phép thành phần ứng dụng ứng dụng khác giao tiếp với cách không đồng Khi Broadcast Service gửi đi, nhận nhiều thành phần đăng ký (registered receivers) mà quan tâm đến loại thông điệp gửi Có hai loại Broadcast Service Android: - Tường thuật (Ordered) Broadcast Service: Khi tường thuật Broadcast Service gửi đi, thành phần đăng ký nhận thơng điệp theo thứ tự Mỗi thành phần xử lý thông điệp, thay đổi nội dung hủy bỏ thông điệp Thứ tự xử lý xác định mức độ ưu tiên (priority) thành phần đăng ký Điều cho phép ứng dụng can thiệp kiểm sốt q trình xử lý thơng điệp - Không tường thuật (Normal) Broadcast Service: Khi không tường thuật Broadcast Service gửi đi, thông điệp gửi đến tất thành phần đăng ký mà không quan tâm đến thứ tự Các thành phần thay đổi thơng điệp hủy bỏ Điều hữu ích bạn muốn thơng báo cho tất thành phần thông điệp mà không cần quan tâm đến việc xử lý chi tiết Để sử dụng Broadcast Service Android, bạn cần tạo lớp BroadcastReceiver để xử lý thông điệp nhận Lớp cần đăng ký file AndroidManifest.xml mã nguồn thành phần khác Bạn gửi thơng điệp cách sử dụng lớp Intent phương thức sendBroadcast() sendOrderedBroadcast() Broadcast Service cho phép thành phần Android giao tiếp với 10 cách linh hoạt khơng đồng Nó sử dụng để thực tác vụ gửi thông báo, cập nhật giao diện người dùng, xử lý kiện hệ thống, v.v 2.3.9 Async Task Thread Android Programing * Async Task AsyncTask cho phép bạn thực tác vụ phức tạp mà khơng làm đóng băng giao diện người dùng Điều hữu ích bạn cần thực tác vụ mà thời gian, chẳng hạn tải liệu từ mạng, xử lý liệu lớn, v.v AsyncTask lớp trừu tượng, bạn cần tạo lớp để thực thi tác vụ không đồng Lớp phải ghi đè phương thức quan trọng sau: - doInBackground(): Phương thức gọi hệ thống để thực tác vụ không đồng Tất công việc chậm chạp, chẳng hạn tải liệu, xử lý liệu, v.v nên thực phương thức - onPreExecute(): Phương thức gọi trước doInBackground() bắt đầu thực Bạn sử dụng phương thức để thực chuẩn bị trước bắt đầu tác vụ - onPostExecute(): Phương thức gọi sau doInBackground() hoàn thành Bạn sử dụng phương thức để xử lý kết tác vụ, cập nhật giao diện người dùng, v.v - onProgressUpdate(): Phương thức gọi bạn gọi phương thức publishProgress() từ doInBackground() Bạn sử dụng phương thức để cập nhật tiến trình tác vụ AsyncTask cung cấp phương thức tiện ích khác để quản lý trạng thái giao tiếp phương thức Bạn truyền tham số vào AsyncTask thông qua phương thức execute() nhận kết trả từ doInBackground() thông qua phương thức onPostExecute() * Thread Trong Android Programming, Thread thành phần quan trọng để thực tác vụ đồng thời ứng dụng Thread đơn vị thực thi độc lập quy trình (process) Nó cho phép ứng dụng chạy tác vụ đồng thời, giúp tránh đóng băng giao diện người dùng thực tác vụ tốn thời gian Trong Android, có hai cách để sử dụng Thread: - Sử dụng lớp Thread: Bạn tạo lớp lớp Thread ghi đè phương thức run() để thực tác vụ thread Sau đó, bạn tạo đối tượng lớp gọi phương thức start() để bắt đầu thực thi thread - Sử dụng giao diện Runnable: Runnable giao diện đơn giản có phương thức run() Bạn tạo lớp thực giao diện Runnable 11 ghi đè phương thức run() để thực tác vụ thread Sau đó, bạn tạo đối tượng lớp truyền vào đối tượng Thread để bắt đầu thực thi thread Khi sử dụng Thread Android, cần lưu ý điểm sau: - Không cập nhật giao diện người dùng từ thread khác thread (UI thread) Bạn sử dụng phương pháp runOnUiThread() Handler để cập nhật giao diện người dùng từ thread khác - Cần quản lý vòng đời thread cách cẩn thận để tránh rò rỉ nhớ tiêu tốn tài nguyên - Cần kiểm soát việc tạo hủy thread cách cân nhắc để tránh việc tạo nhiều thread làm giảm hiệu suất ứng dụng Thread công cụ mạnh mẽ Android Programming để thực tác vụ đồng thời tăng cường hiệu suất ứng dụng Tuy nhiên, cần xử lý thread cách cẩn thận để đảm bảo tính ổn định hiệu ứng dụng 2.3.10 Mini project Trong q trình thực tập, em có tham gia thực mini project bạn khác Chủ đề nhóm em lựa chọn Ứng dụng Alarm Ứng dụng bao gồm chức bản: + Thêm, sửa, xóa báo thức + Đặt nhạc chuông cho báo thức + Báo thức lặp lại + Snooze báo thức + Đồng hồ bấm (Stopwatch) Em thực việc viết lớp SQLiteHelper phần chức Stopwatch Để lưu trữ liệu báo thức lịch sử bấm giờ, em có dùng bảng để lưu trữ liệu: + Bảng alarm: id INT, hour INT, minute INT, day VARCHAR(50), sound INT, status BOOLEAN + Bảng stopWatch: id INT, pos INT, hour INT, minute INT, second INT, milisecond INT, recentStop LONG Trong phần Stopwatch, để biểu diễn thời gian chạy liên tục, em sử dụng handler điều khiển Runable (chứa hàm run() biểu diễn khoảng thời gian trơi qua) 2.4 Kết thực - Hồn thành luyện tập server - Vượt qua thi IM - Tham gia hoàn thành mini project: Ứng dụng Alarm 12 Hình Buổi lễ trao tặng giấy chứng nhận hồn thành khóa thực tập KẾT LUẬN CHUNG Sau thời gian tuần thực tập trung tâm, với nỗ lực, cố gắng thân với hướng dẫn tận tình thầy với giúp đỡ anh mentor, anh chị phịng nhân trung tâm em hồn thành khóa thực tập tốt nghiệp Kết báo cáo đạt nội dung cụ thể sau: - Hiểu rõ cấu trúc liệu Stack, Queue cách triển khai - Nâng cao khả giải tốn thơng qua luyện tập - Hiểu thêm lập trình android cải thiện khả làm việc nhóm với mini project Trong trình thực tập hồn thành báo cáo thực tập, thân em khơng tránh khỏi sai sót, em mong nhân bảo đóng góp ý kiến thầy để báo cáo em hoàn thiện Em xin chân thành cảm ơn! 13 TÀI LIỆU THAM KHẢO 14