Как воспользоваться кнопкой Android «Очистить кэш» - PullRequest
15 голосов
/ 17 мая 2010

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

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


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

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

Ответы [ 2 ]

24 голосов
/ 22 мая 2010

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

Используя следующее приложение, я смог создать файл в каталоге кэша, а затем очистить его с помощью функции «Управление приложениями» в разделе «Настройки». Мне не нужно было ничего менять в манифесте, и из того, что я могу сказать, вы действительно не должны связываться с опцией 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
# 

На этом этапе Управление приложениями сообщает, что для кэширования используется 0 КБ пространства.

4 голосов
/ 17 мая 2010

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

Кроме того, вы можете очистить кеш в своей деятельности.

...