Bài đăng

[iOS 01] UILabel là gì?

1. UILabel là gì? UILabel class là lớp kế thừa từ text-view chỉ đọc. Tôi có thể sử dụng class này để vẽ một hoặc nhiều đường cho dạng text tĩnh, hơi khó hiểu hả? Ví dụ như tôi có thể xác định nó là một phần lớn của user interface, như là các dạng chữ thường hoặc dạng chữ kết hợp font chữ. Lớp UILabel cung cấp cho cả kiểu đơn giản và phức tạp về style của nó, Tôi cũng có thể điều khiển về mặt bên ngoài (diện mạo) của giao diện, như là liệu rằng label có thể sử dụng đổ bóng hoặc vẽ với highlight. Nếu cần thiết thì bạn cũng có thể custom lại giao diện của text bằng một lớp subclass, nó y chang như bên Android về mặt nguyên lý, chỉ khác là mặt ngôn ngữ thể hiện mà thôi. 2. Tạo UILabel. Khi tôi biết chắc chắn rằng kích thước muốn đặt label, thì có thể khởi tạo ngay một UILabel với CGRect frame. let frame = CGRect ( x: 0 , y: 0 , width: 200 , height: 21 ) let label = UILabel ( frame: frame ) view . addSubview ( label ) Bạn có thể thêm constraints vào trong UILabel khi ban

[Android 09] Toàn tập RecyclerView

1. RecyclerView ??? 😇 ??? RecyclerView có một vài thành phần chính: Adapter: Một subclass của RecycleView.Adapter, chịu trách nhiệm cung cấp views để hiển thị các items trong tập dữ liệu (data set). Position: Vị trí đã được attach vào view con, sử dụng trong phương thức getChildAt(int). Binding: Quy trình chuẩn bị để hiển thị dữ liệu chính xác vào trong adapter với vị trí đã định. Recycle: Một view trước đó đã hiển thị dữ liệu cho một vị trí adapter đặc biệt có thể được lưu trong cache để sử dụng lại sau này, hiển thị kiểu dữ liệu giống nhau. Nó có thể tăng rất mạnh mẽ về performance bởi đã bỏ qua việc khởi tạo layout hoặc constructor. Scrap: Một view con đã được nhập vào trạng thái tạm thời trong quá trình bố trí layout. Scrap view có thể sử dụng lại mà không trở thành hoàn toàn bị tách ra khỏi RecyclerView cha, kể cả không chỉnh sửa (unmodified) nếu không cần phải binding lại hoặc modidy bởi adapter nếu view được xem xét về dữ liệu. Dirty: Một view chon phải được rebound bở

[Android 08] Service và những vấn đề liên quan

Hình ảnh
1. Service là gì? Service chạy ở background, thi hành tiến trình tốn nhiều thời gian hoặc thi hành các process từ xa. Một service không cung cấp bất kì user interface nào cả, nó chỉ hoạt động ở background với các input từ user. Ví dụ, một service có thể chơi nhạc ở background trong khi người dùng đang surfing ở 1 app khác, hoặc có thể download data từ internet mà không block user interaction với thiết bị. 2. LifeCycle của Service. Một vòng đời của Service có những callbacks sau: onCreate() Nó được thực thi khi service được khởi tạo để cài đặt các cấu hình cần thiết. Lưu ý rằng nó không được gọi khi service đang hoạt động, tức là nó chỉ được thực thi nếu service chưa chạy. onStartCommand() Phương thức này được gọi mỗi khi ủy quyền cho startService() bằng component, Activity hoặc Fragment, hoặc BroadcastReceiver. Khi sử dụng phương thức này, Service sẽ chạy cho tới khi sử dụng stopSelf() hoặc stopService(). Lưu ý rằng bất kể bao nhiêu lần phương thức onStartCommand được gọi, stopSe

[Android 07] SharedPreferences sống thử với Singleton

1. Singleton là gì? Singleton pattern là một lớp nhằm đảm bảo rằng chỉ có 1 instance của nó được tạo ra và cung cấp 1 cách giao tiếp chung bên trong nó cho những tác nhân bên ngoài. Nói chung nó sẽ đảm bảo tính nhất quán ( consistency ). Singleton quản lý việc truy cập khá tốt vì chỉ có 1 instance duy nhất. Có thể cải tiến các tác vụ và các thể hiện do pattern, sẽ được kế thừa và tùy biến thông qua thể hiện của lớp con. Quản lý số lượng các instance của 1 lớp, Flexible hơn so với việc dùng 1 lớp có thuộc tính static (Lí do bởi vì static có thể sử dụng 1 instance duy nhất, còn singleton pattern cho phép quản lý instance tốt hơn và dễ dàng tùy biến). 2. Khi nào dùng Singleton? Khi cần instance duy nhất của 1 lớp. Khi instance đó có khả năng mở rộng thông qua kế thừa, do đó các dev có thể sử dụng kế thừa mà không cần thay đổi mã code. 3. Cách thức Singleton được tạo. Định nghĩa thuộc tính private và static trong lớp Singleton Định nghĩa constructor thành protected

[Android 06] Commit và Apply

//Đây là một ít tản mạn về commit và apply, vì thế không cần đề mục, okay?, blogspot =_=! Chắc hẳn nhiều bạn coder hoặc developer đều đã dùng ít nhất một trong hai phương thức commit hoặc apply khi sử dụng SharedPreferences . Bản chất:  editor.apply(), phương thức này là bất đồng bộ . editor.commit(), phương thức này là đồng bộ . Rõ ràng bạn có thể gọi cả apply() và commit(). SharedPreferences settings = getSharedPreferences ( PREFS_FILE , MODE_PRIVATE ); SharedPreferences . Editor editor = settings . edit (); editor . putBoolean ( PREF_CONST , true ); //Nó sẽ goi bất đồng bộ để put giá trị vào SP mà không cần quan tâm tiến trình hiện tại ra làm sao. editor . apply (); SharedPreferences settings = getSharedPreferences ( PREFS_FILE , MODE_PRIVATE ); SharedPreferences . Editor editor = settings . edit (); editor . putBoolean ( PREF_CONST , true ); //Nó sẽ gọi đồng bộ put giá trị vào trong khi vẫn giữ tiến trình hiện tại hoàn thành. boo

[Android 05] AsyncTask và những vấn đề kĩ thuật

Hình ảnh
1. AsyncTask là gì?  Trong Android, Activity và Services, hầu hết tất cả các hàm gọi lại (callbacks) đều được chạy trong main thread. Rất dễ dàng để cập nhật UI, nhưng tiến trình hoặc I/O, những tiến trình nặng có thể làm cho UI đứng lại, và sẽ mắc vào bẫy ANR. Có thể biện pháp khắc phục ở đây là cho tiến trình chạy trong một thread ở background. Một trong số các cách hữu dụng là sử dụng AsyncTask, được cung cấp trong framework để tạo điều kiện dễ dàng sử dụng trong thread background, và cũng trình diễn UI Thread trước, trong và sau khi background Thread hoàn thành. Đơn giản AsyncTask là vậy, cụ thể thì nó có 4 phương thức chính được ghi đè: onPreExecute, doInBackground, onProgressUpdate, onPostExecute. Hầu hết các lập trình viên Android, từ dân tửu lượng 1 cút đến dân tửu lượng vài can đều biết sử dụng AsyncTask như thế nào trong việc xử lý dữ liệu thông qua 4 phương thức đề cập ở trên. Nhưng để phân tầng level technical thì cần đến "1 vài kĩ thuật xử lý quan trọng với As