2012-06-08 47 views
5

chạy logcat adb trong vỏ tôi thấy một cái gì đó như thế nàyvi phạm chế độ nghiêm ngặt liệt kê

StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2

  1. những gì các chính sách = 23 nghĩa là gì?
  2. vi phạm là gì = 2?

Tôi đã tìm kiếm ý nghĩa của giá trị này nhưng tôi không thể tìm thấy bất kỳ tài liệu whit vi phạm và chính sách danh sách, hoặc có lẽ tôi giải thích các kết quả từ tìm kiếm của tôi một cách tồi tệ, nhưng tôi sẽ đánh giá cao một số giải thích về điều này

Trả lời

8

chính sách = 23 nghĩa là gì?

Bạn có thể cấu hình StrictMode để thông báo cho bạn về những điều nhất định và bạn có thể nói với nó như thế nào bạn muốn nhận được thông báo (thông điệp đơn giản log, ngoại lệ, ...). Xem phần Bật StrictMode trong this blog post để tham khảo.

Chính sách là một bitmap theo dõi cấu hình đó trong nội bộ. Vì nó là một mặt nạ nó trực quan hơn để giải thích nó trong nhị phân, đó là 10111. Sau đó, bạn có thể tìm kiếm các bit có liên quan trong tệp nguồn BlockGuard.java. Dưới đây là một bản sao ngắn từ this site(không chắc chắn những gì phiên bản Android có nghĩa là, có thể có nhiều điều trong các phiên bản mới hơn, tôi không có nguồn hiện tại trên máy tính của tôi ngay bây giờ):

public static final int DISALLOW_DISK_WRITE = 0x01; 
public static final int DISALLOW_DISK_READ = 0x02; 
public static final int DISALLOW_NETWORK = 0x04; 
public static final int PASS_RESTRICTIONS_VIA_RPC = 0x08; 
public static final int PENALTY_LOG = 0x10; 
public static final int PENALTY_DIALOG = 0x20; 
public static final int PENALTY_DEATH = 0x40; 

Với bạn có thể biết rằng StrictMode của bạn được định cấu hình để thông báo cho bạn về các vi phạm DISK_READ, DISK_WRITE và NETWORK thông qua thông báo tường trình.

và vi phạm là gì = 2?

Đây chỉ là loại vialolation như một số hằng số int nội bộ. Nó không giúp bạn nhiều kể từ khi tên của ngoại lệ cho rằng đã đi. Tác giả vừa xác định một phương thức getMessage() được sử dụng trên tất cả các ngoại lệ StrictMode được phân loại phụ khác nhau. Chỉ để tham khảo, các hằng số này được xác định trong vòng StrictMode.java.

+1

Đối với Android ngày hôm nay, danh sách các chính sách nằm trong 'Mã nguồn' StrictMode.java' (https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android /os/StrictMode.java). Hiện tại, chúng không được hiển thị trong tài liệu. Lưu ý rằng hầu hết các tên không đổi bây giờ phản ánh tên phương thức tương ứng. –

Các vấn đề liên quan