2017-01-07 12 views
7

Bắt đầu với Android 6.0, các quyền được yêu cầu trong thời gian chạy chứ không phải trước khi cài đặt.hiển thị giải thích quyền không đồng bộ

Android official doc khuyến đoạn mã sau:

// Here, thisActivity is the current activity 
if (ContextCompat.checkSelfPermission(thisActivity, 
       Manifest.permission.READ_CONTACTS) 
     != PackageManager.PERMISSION_GRANTED) { 

    // Should we show an explanation? 
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
      Manifest.permission.READ_CONTACTS)) { 

     // Show an explanation to the user *asynchronously* -- don't block 
     // this thread waiting for the user's response! After the user 
     // sees the explanation, try again to request the permission. 

    } else { 
     // No explanation needed, we can request the permission. 
     ... 
    } 
} 

Tôi đang bối rối về một điều trong mã mẫu ở trên, đó là lý do tại sao những nhận xét trên cho biết "Hiện một lời giải thích cho người dùng không đồng bộ"? Đó có phải là một quy ước để làm theo không? Tôi có nghĩa là nếu tôi chỉ có kế hoạch bật lên một hộp thoại để giải thích tại sao sự cho phép là cần thiết, tôi không thấy cần phải bật hộp thoại không đồng bộ. Tôi chỉ không hiểu tại sao google đề xuất mã không đồng bộ ở đó.

Có phải Google cho biết không muốn hộp thoại bật lên của nhà phát triển ở đó nhưng thực hiện một số hành động nặng? hmm ... dù sao, khá khó hiểu về điều này.

Trả lời

3

Đây có phải là quy ước để theo dõi không?

Đây là một khái niệm tiêu chuẩn trong tất cả phát triển ứng dụng Android, đặc biệt là khi giao dịch với giao diện người dùng. Nó cũng được yêu cầu khá nhiều, vì không có API cho các giao diện người dùng đồng bộ trong Android.

Ý tôi là nếu tôi chỉ định bật hộp thoại để giải thích lý do cần phải cho phép, tôi không thấy cần bật hộp thoại không đồng bộ.

Mọi hộp thoại bạn đã bật lên trong Android đã được bật lên không đồng bộ. Khi bạn gọi show(), hộp thoại sẽ không xuất hiện vào thời điểm trả tiền show(). Đó là được lên lịch để xuất hiện và nó sẽ xuất hiện đôi khi sau khi bạn trở lại quyền kiểm soát đối với chuỗi ứng dụng chính. Đây là những gì Google có nghĩa là "không đồng bộ" ở đây.

Một đồng bộ UI sẽ là nếu gọi show() để hiển thị một hộp thoại chặn thực hiện thêm mã của bạn cho đến khi hộp thoại ra đi, để bạn biết những gì người dùng đã làm với điều đó hộp thoại trên báo cáo kết quả tiếp theo sau show().

+0

Vì vậy, khi hiển thị giải thích bằng hộp thoại, tôi không cần sử dụng ví dụ: AysncTask bật lên hộp thoại vì nó đã là một cuộc gọi không đồng bộ? –

+0

@ Leem.fin: Bạn không cần phải gọi 'show()' để hiển thị hộp thoại từ chuỗi nền, chẳng hạn như 'AsyncTask'. – CommonsWare

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