Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Crash được mô tả ở BluezoneGlobal/bluezone-app#33
Nguyên nhân:
notificationManager
chỉ được khởi tạo ở dòng này AppsUtils.java#L209 khi phiên bản Android >= 8.0, trên các phiên bản thấp hơn, biến không được khởi tạo, gọi methods trên biến sẽ bịNullException
. Vấn đề là ở các vị trí gọi hàm có sử dụng biến này chỉ xử lýJSONException
, dẫn tới exceptions không được xử lý và ứng dụng crash.Cách xử lý: Cách xử lý hợp lý là thực thi việc quản lý notifications cho Android < 8.0, nhưng việc này nên để core devs thực hiện vì họ hiểu rõ phần lõi và yêu cầu hơn mình, khách vãng lai như mình chỉ làm hotfix thôi. Mình sửa lai các vị trí gọi hàm để catch tất cả exceptions, để không crash thôi. Mình code không test vì không có sẵn dev env, mong các bạn thông cảm.
Qua lỗi vặt gây hậu quả không vặt này, mình góp ý các bạn devs không nên tin vào IDE, mình đoán các bạn thấy IDE tự viết try-catch nên các bạn nghĩ IDE đủ thông minh để xử lý hết lỗi, hậu quả là như này đây. Góp ý chân thành, không có ý chê bai gì cả, các bạn đang làm việc có ích cho xã hội, cảm ơn các bạn nhiều.
Các bạn cũng nên xem xét việc sử dụng NotificationManagerCompat và các thư viên compat khác để tránh việc rải
if (arch >= xxx)
dẫn tới rất khó để kiểm soát code flow.@ntcuong ping