Vì sao có lỗi không xem được threads ở một số box trên app?
1. Mình mở ra post riêng để tránh làm dài topic và nếu bạn nào không thích về lập trình Android thì bạn vui lòng bỏ qua post này.
2. Như mình đã nói, lỗi không xem được Box Camera không phải do update lên bản 3.8 mà từ trước giờ đã bị.
3. Lỗi này là do mình sử dụng SAXParser của ngôn ngữ Java để xử lý XML do máy chủ vnphoto phát ra. Trong Box Camera hiện tại, có một hoặc vài bạn đã dùng một số ký tự đặc biệt mà những ký tự đó làm cho XML file bị lỗi cú pháp (gọi là not well-formed).
4. Sax thì xử lý xml rất nhanh (so với DOM mà mình dùng trong bản Android đầu tiên) nhưng yêu cầu file XML phải có cú pháp chuẩn (well-formed) nếu trong nội dung có bất cứ ký tự đặc biệt nào (ví dụ như dấu &) là nó làm gãy cú pháp XML và Sax sẽ ngưng xử lý và báo lỗi.
Mình đã xử lý tình huống này như thế nào?
5. Mình mất gần 10 tiếng đồng hồ làm việc không liên tục mới sửa được một lỗi tưởng là đơn giản.
6. Mình tốn gần 6 tiếng đồng hồ dò tìm hầu hết trên Internet xem có cách nào Sax bỏ qua lỗi ký tự đặc biệt và tiếp tục xử lý thông tin đến hết không nhưng hoàn toàn không có ai trên Internet xử lý được việc này. Họ chỉ nói là phải xử lý file XML nguồn vào sao cho nó đúng cú pháp nhưng họ không nêu chi tiết coding phải làm thế nào.
7. Cuối cùng mình buộc phải bỏ SAXParser và viết lại hoàn toàn một class mới dùng XmlPullParser của Java để xử lý XML. Như các bạn thấy, may mắn là phương pháp mới này đã giải quyết vấn đề. Tuy nhiên, mình sẽ vẫn tiếp tục theo dõi hàng ngày.
8. Chính vì mình phải viết lại hoàn toàn class mới cho nên thời gian đã phải kéo dài lâu như trên mới xử lý được vấn đề.
9. Mình viết ra ở trên để ghi lại kinh nghiệm cho các bạn nào trong vnphoto có lập trình cho Android. Ở kinh nghiệm này, trong workshop sau này mình sẽ nêu rõ ra về cách coding của SAXParser và XmlPullParser của Java khi đọc RSS feed để các bạn sẽ hiểu rõ hơn và dùng làm kinh nghiệm cho các bạn.
10. Qua sự việc đáng trách này của mình, mình đã học được một điều rất xứng đáng.
11. Trong tháng đến mình sẽ xây dựng toolbar menu trong bản Android để các bạn từ bất cứ giao diện nào của app sẽ có thể đi đến box khác xem bài viết mà không cần phải quay trở lại trang chủ.