2013-08-13 53 views
7

Làm thế nào để xóa bộ nhớ cache của mọi ứng dụng trong điện thoại Android của tôi theo lập trình? việc xóa bộ nhớ cache lập trình có được phép trong Android không? nếu được phép, làm thế nào? Tôi đã cố gắng nghiên cứu và tôi không thể tìm thấy câu trả lời mà tôi cầnAndroid: Xóa bộ nhớ cache lập trình

Trả lời

0

Để xóa Dữ liệu ứng dụng, hãy thử cách này. Tôi nghĩ rằng nó sẽ giúp bạn.

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));Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************"); 
      } 
     } 
    } 
} 

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(); 
} 
4

Đây là một tình huống buồn cười. Trong Manifest.Permission documentation

public static thức Chuỗi CLEAR_APP_CACHE

gia tăng ở mức API 1 Cho phép ứng dụng xóa cache của tất cả ứng dụng cài đặt trên thiết bị.

liên tục giá trị gia tăng: "android.permission.CLEAR_APP_CACHE"

Vì vậy, bạn có thể nhận được sự cho phép để xóa bộ nhớ cache của tất cả ứng dụng. Nhưng tôi không nghĩ rằng có bất kỳ phương pháp trong SDK để sử dụng quyền này. Vì vậy, bạn chỉ có thể giữ sự cho phép và không làm gì với nó. Lạ từ google.

EDIT: This Google thảo luận có thể được quan tâm. Dianne Hackborn đặc biệt nói rằng sự cho phép trên không nên có mặt trong SDK, vì API sử dụng nó không có ở đó.

+0

Bạn không thể sử dụng quyền này, từ https://developer.android.com/reference/android/Manifest.permission.html#CLEAR_APP_CACHE - Cấp độ bảo vệ: hệ thống | chữ ký – AndroidCoolestRulest

9

tôi đã tìm thấy cái này:

import java.io.File; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 

public class HelloWorld extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle *) { 
     super.onCreate(*); 
     setContentView(R.layout.main); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 
    } 

    //Fires after the OnStop() state 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     try { 
     trimCache(this); 
     } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
    } 

    public static void trimCache(Context context) { 
     try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
     } catch (Exception e) { 
     // TODO: handle exception 
     } 
    } 

    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; 
      } 
     } 
     } 

     // The directory is now empty so delete it 
     return dir.delete(); 
    } 

} 

Nó có thể hữu ích cho bạn.

+0

Tôi có 30 trang trong dự án của tôi. Nếu tôi muốn xóa bộ nhớ cache, tôi nên làm như thế nào. Tôi phải thêm mã này vào tất cả các lớp của tôi hoặc bất kỳ lớp nào trong một lớp. – Vijay

+0

bạn có thể mở rộng 'Hoạt động' trong một lớp với các phương thức này và sau đó nhập lớp đó vào tất cả các hoạt động. –

+0

Đoạn mã này có thể xóa bộ nhớ cache của tất cả các ứng dụng được cài đặt trên thiết bị không? –

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