2015-04-15 14 views
8

Tôi muốn xóa dữ liệu của ứng dụng của tôi theo chương trình. Tôi đã tìm thấy phương thức clearApplicationUserData. Nhưng khi tôi chạy nó, ứng dụng sẽ giảm thiểu chính nó. Tức là, ứng dụng sẽ chuyển sang nền, giống như khi nó được nhấn nút home. Đây là mã của tôi:clearApplicationUserData thu nhỏ ứng dụng

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    ((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE)) 
         .clearApplicationUserData(); 
} else { 
     // TODO 
} 

Có một số cách để xóa dữ liệu bằng phương pháp này mà không giảm thiểu ứng dụng?

+2

Tại sao bạn làm điều này? – portfoliobuilder

+1

Bởi vì tôi muốn xóa dữ liệu của ứng dụng của tôi theo chương trình. Phương thức này có trong API. Tôi không thể sử dụng nó? =) – androidevil

+0

Bạn có ý nghĩa gì khi giảm thiểu ứng dụng? –

Trả lời

3

Phương thức ActivityManager.clearApplicationUserData() sẽ xóa tất cả dữ liệu của ứng dụng và giết trực tiếp quy trình ứng dụng mà không có bất kỳ cảnh báo nào. Tôi kiểm tra các tài liệu và nguồn, nó có vẻ không giống như một lỗi nhưng được thiết kế để làm việc như thế. Tôi có một số suy đoán như sau:

  1. Phương pháp này được thiết kế để đặt lại hoàn toàn ứng dụng của bạn. Có thể bạn có thể cung cấp cho người dùng tùy chọn đặt lại hoàn toàn.
  2. Phương pháp này được thiết kế để thử nghiệm tính thuận tiện (bạn có thể đặt lại ứng dụng mà không cần cài đặt lại).

Nếu bạn muốn thực hiện phương pháp của riêng mình để quản lý dữ liệu ứng dụng. This answer có thể hữu ích.

0
public void clearApplicationData() { 
     File cache = getCacheDir(); 
     File appDir = new File(cache.getParent()); 
     if (appDir.exists()) { 
      String[] children = appDir.list(); 
      for (String s : children) { 
       if (!s.equals("lib")) { 
        deleteDir(new File(appDir, s)); 

       } 
      } 
     } 
    } 
public static boolean deleteDir(File dir) { 
     if (dir != null && dir.isDirectory()) { 
      String[] children = dir.list(); 
      for (int i = 0; i < children.length; i++) { 
       boolean success = deleteDir(new File(dir, children[i])); 
       if (!success) { 
        return false; 
       } 
      } 
     } 

     return dir.delete(); 
    } 
+0

^https://hrupin.com/2011/11/how-to-clear-user-data-in-your-android-application-programmatically –

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