2010-05-17 39 views
13

Trong cài đặt của Android, trong hoạt động "Quản lý ứng dụng" khi nhấp vào ứng dụng, dữ liệu được chia nhỏ thành Ứng dụng, Dữ liệu và bộ nhớ cache. Ngoài ra còn có một nút để xóa bộ nhớ cache. Ứng dụng của tôi lưu trữ các tệp âm thanh và tôi muốn người dùng có thể xóa bộ nhớ cache bằng nút này. Làm thế nào để lưu trữ chúng để chúng được gộp lại với bộ nhớ cache và người dùng có thể xóa chúng? Tôi đã thử lưu trữ tệp bằng cả hai kỹ thuật sau:Làm cách nào để tận dụng nút "Xóa bộ nhớ cache" của Android

newFile = File.createTempFile("mcb", ".mp3", context.getCacheDir()); 


newFile = new File(context.getCacheDir(), "mcb.mp3"); 
newFile.createNewFile(); 

Trong cả hai trường hợp, các tệp này được liệt kê dưới dạng Dữ liệu chứ không phải Cache.

+0

Tôi cũng gặp vấn đề tương tự. Đáng buồn thay, DDMS Android trong Eclipse không cho phép tôi duyệt thư mục/data! Vì vậy, tôi không có ý tưởng nơi các tập tin của tôi đang được lưu, ngay cả khi các điều khoản khác nhau cho phép sử dụng nút "Clear cache". – greenie

Trả lời

24

Tôi không thể tái tạo sự cố của bạn, có thể có điều gì đó không ổn.

Sử dụng ứng dụng sau, tôi có thể tạo tệp trong thư mục bộ nhớ cache và sau đó xóa tệp bằng chức năng Quản lý ứng dụng trong Cài đặt. Tôi không phải thay đổi bất cứ điều gì trong bản kê khai và từ những gì tôi có thể nói, you really shouldn't mess with the android:allowClearUserData option.

public class CreateCacheFile extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button = (Button) findViewById(R.id.CreateFileButton); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       File file = new File(
         CreateCacheFile.this.getCacheDir(), "temp.txt"); 

       try { 
        file.createNewFile(); 
        FileWriter fw = new FileWriter(file); 
        BufferedWriter bw = new BufferedWriter(fw); 
        bw.write("Hello World"); 
        bw.newLine(); 
        bw.close(); 

       } catch (IOException e) { 
        Toast.makeText(
          CreateCacheFile.this, 
          "Error!", 
          Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 
} 

Sau khi chạy ứng dụng (và nhấn vào nút để tạo ra các tập tin):

$ adb -d shell 
# ls /data/data/com.example.CreateCacheFile/cache 
temp.txt 
# cat /data/data/com.example.CreateCacheFile/cache/temp.txt 
Hello World 
# 

Quản lý ứng dụng báo cáo rằng 4KB không gian được sử dụng cho bộ nhớ cache. Sau khi nhấp vào nút để xóa nó:

# ls /data/data/com.example.CreateCacheFile/cache 
# cat /data/data/com.example.CreateCacheFile/cache/temp.txt 
temp.txt: No such file or directory 
# 

Tại thời điểm này, ứng dụng quản lý báo cáo 0KB dung lượng được sử dụng cho bộ nhớ cache.

+0

Tuyệt vời, đã làm việc cho tôi. +1 – greenie

+0

Bạn nói đúng. Dường như làm việc. Tôi phải làm điều gì đó sai trái. Cảm ơn. –

+0

Bạn nên kiểm tra khả năng đọc/ghi bằng cách sử dụng 'Environment.getExternalStorageState()' khi sử dụng 'getCacheDir()'? Hoặc không có gì để làm với nó? – Jago

4

Tôi nghĩ bạn phải sử dụng android:allowClearUserDataandroid:manageSpaceActivity trong thẻ <application> để xem tùy chọn đó trong 'Quản lý ứng dụng'. Xem http://developer.android.com/guide/topics/manifest/application-element.html để biết thêm thông tin.

Hoặc, có tùy chọn xóa bộ nhớ cache trong hoạt động của bạn.

+1

Nó xuất hiện allowClearUserData sẽ không hoạt động, nhưng quản lýSpaceActivity là một ý tưởng tốt. http://www.mail-archive.com/[email protected]/msg16507.html Tuy nhiên, tôi vẫn muốn có thể sử dụng nút bộ nhớ cache rõ ràng. –

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