Как использовать кнопку "Очистить кеш" Android

В настройках Android в приложении "Управление приложениями" при нажатии на приложение данные разбиваются на "Приложения", "Данные" и "Кэш". Также есть кнопка для очистки кеша. Мое приложение кэширует аудиофайлы, и я хотел бы, чтобы пользователь мог очистить кеш с помощью этой кнопки. Как их хранить, чтобы они были сосредоточены в кеше, и пользователь может их очистить? Я попытался хранить файлы, используя оба следующих метода:

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


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

В обоих случаях эти файлы перечисляются как данные, а не кеш.

Ответы

Ответ 1

Я не могу воспроизвести вашу проблему, возможно, что-то еще не так.

Используя следующее приложение, мне удалось создать файл в каталоге кеша, а затем очистить его, используя функцию "Управление приложениями" в разделе "Настройки". Мне не нужно было ничего менять в манифесте и из того, что я могу сказать, вам действительно не следует путаться с опцией android:allowClearUserData.

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

После запуска приложения (и нажатия кнопки для создания файла):

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

Управляйте отчетами приложений о том, что для кеша используется 4 КБ пространства. После нажатия кнопки, чтобы очистить его:

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

В этот момент Manage Applications сообщает, что для кеша используется 0 Кбайт пространства.

Ответ 2

Я думаю, вам нужно использовать android:allowClearUserData и android:manageSpaceActivity под тегом <application>, чтобы увидеть эту опцию в разделе "Управление приложениями". Подробнее см. http://developer.android.com/guide/topics/manifest/application-element.html.

Кроме того, у вас есть опция для очистки кеша в вашей активности.