aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Minh họa môi trường phát triển React Native với laptop, Android emulator và iOS simulator

Android postInvalidate khi custom View cần lên lịch vẽ lại

Suong Nguyen by Suong Nguyen
13/11/2026
in Lập trình Mobile
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Một custom View đọc tiến độ từ công việc nền. Bạn đã đổi giá trị nhưng hình trên màn hình vẫn cũ cho đến khi View được vẽ lại bởi thao tác khác. Hãy xác định nguồn dữ liệu mà onDraw đọc, rồi yêu cầu hệ thống cập nhật phần hiển thị khi dữ liệu đổi.

Ví dụ và cách đọc

Android View cung cấp postInvalidate để lên lịch invalidate, có thể gọi từ ngoài UI thread. Ví dụ minh họa một snapshot số nguyên duy nhất có volatile. Import android.view.View và đọc percent trong onDraw của custom View đã gắn vào cửa sổ. Đoạn này không gọi trực tiếp onDraw từ worker.

class ProgressSnapshot {
    @Volatile
    var percent: Int = 0
        private set

    fun updateFromWorker(value: Int, view: View) {
        percent = value.coerceIn(0, 100)
        view.postInvalidate()
    }
}

Kiểm tra kết quả

Kiểm tra bằng cách gửi một giá trị nhỏ rồi một giá trị lớn, theo dõi dữ liệu mà onDraw đọc. Một số lần cập nhật gần nhau có thể được hiển thị gộp. Nếu giao diện cần từng bước riêng, định nghĩa cách chuyển trạng thái thay vì dùng số lần vẽ làm bộ đếm tác vụ. Kiểm tra thêm trường hợp View đã rời màn hình trước khi gửi cập nhật.

Áp dụng và giới hạn

Nếu dữ liệu gồm nhiều trường liên quan, dùng snapshot bất biến hoặc đưa cập nhật về UI thread để tránh đọc các trường của hai trạng thái khác nhau. Đổi nội dung vẽ bên trong cùng kích thước khác với yêu cầu đo lại khi kích thước mong muốn thay đổi. Đối chiếu View API ngày 13/11/2026. Đoạn Kotlin được rà thủ công và chưa chạy SDK, emulator hoặc đo số frame.

Tình huống áp dụng

Tách bài thử dữ liệu khỏi bài thử vẽ. Trước tiên xác nhận giá trị âm được chặn về 0 và giá trị lớn hơn 100 được chặn về 100. Sau đó gắn custom View vào cửa sổ, cho worker gửi một giá trị và quan sát nhãn hoặc hình vẽ ở trạng thái ổn định. Tránh viết test buộc mỗi lần gửi tương ứng đúng một lần onDraw, vì hệ thống có thể lên lịch và gộp yêu cầu theo chu kỳ.

Với Activity hoặc Fragment thật, kiểm tra nơi bắt đầu và kết thúc việc nhận cập nhật. Nếu worker có thể giữ View qua lần xoay màn hình, đổi cách truyền dữ liệu để màn hình mới đăng ký lại theo vòng đời. Trạng thái tiến độ có thể tồn tại độc lập với View, còn yêu cầu vẽ chỉ có ý nghĩa khi có View hiện tại. Hợp đồng API cho phép gọi ngoài UI thread khi View đã gắn với cửa sổ. Giữ điều kiện đó ở lớp tích hợp và kiểm tra cả lúc rời màn hình.

Nguồn tham khảo

  • Tài liệu chính thức 1

Tags: AndroidCustom ViewKotlin
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Minh họa môi trường phát triển React Native với laptop, Android emulator và iOS simulator

Handler.removeCallbacks: giữ đúng Runnable để hủy tác vụ chờ

by Suong Nguyen
12/11/2026
0

Tách thao tác hủy callback chờ khỏi hủy công việc đang chạy, với ví dụ Runnable có tham chiếu ổn định.

Minh họa môi trường phát triển React Native với laptop, Android emulator và iOS simulator

Android TextUtils.isEmpty không loại chuỗi toàn khoảng trắng

by Suong Nguyen
11/11/2026
0

Phân biệt null, chuỗi rỗng và chuỗi blank khi kiểm tra tên nhập từ EditText, rồi chọn quy tắc Kotlin phù hợp.

Minh họa môi trường phát triển React Native với laptop, Android emulator và iOS simulator

Android runOnUiThread và Handler.post: chạy ngay hay đưa vào hàng đợi?

by Suong Nguyen
10/11/2026
0

Đọc đúng thứ tự callback khi gọi runOnUiThread từ main thread và phân biệt với Handler.post gắn vào main Looper.

Minh họa môi trường phát triển React Native với laptop, Android emulator và iOS simulator

Android CheckBox: đổi isChecked bằng code vẫn có thể gọi listener

by Suong Nguyen
09/11/2026
0

Phân biệt sự kiện đổi trạng thái với thao tác bấm của người dùng khi dùng CheckBox và OnCheckedChangeListener trong Android Views.

Next Post
Lập trình viên chuẩn bị phỏng vấn fresher React Native với laptop, điện thoại và thẻ câu hỏi

Map.set có đưa khóa đã tồn tại xuống cuối không?

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native Alert trên Android và hai đường hủy hộp thoại
  • Map.set có đưa khóa đã tồn tại xuống cuối không?
  • Android postInvalidate khi custom View cần lên lịch vẽ lại

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply