代码之家  ›  专栏  ›  技术社区  ›  Jay Askren

如何利用Android的“清除缓存”按钮

  •  14
  • Jay Askren  · 技术社区  · 14 年前

    在Android的设置中,在单击应用程序时的“管理应用程序”活动中,数据被分解为应用程序、数据和缓存。还有一个按钮可以清除缓存。我的应用程序缓存音频文件,我希望用户能够使用此按钮清除缓存。如何存储它们,以便它们与缓存集中在一起,用户可以清除它们?我尝试使用以下两种技术来存储文件:

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

    在这两种情况下,这些文件都列为数据而不是缓存。

    2 回复  |  直到 14 年前
        1
  •  24
  •   Tim Kryger    14 年前

    我不能再重复你的问题了,也许还有别的问题。

    使用以下应用程序,我可以在缓存目录中创建一个文件,然后使用“设置”下的“管理应用程序”功能将其清除。我不需要改变舱单上的任何东西,从我所知道的来看, 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();
                    }
                }
            });
        }
    }
    

    运行应用程序后(并单击按钮创建文件):

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

    管理应用程序报告4KB的空间正在用于缓存。单击按钮清除后:

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

    此时,管理应用程序报告缓存使用了0KB的空间。

        2
  •  4
  •   Al.    14 年前

    我想你必须利用 android:allowClearUserData android:manageSpaceActivity 在你的下面 <application> 标记以查看“管理应用程序”中的选项。见 http://developer.android.com/guide/topics/manifest/application-element.html 更多信息。

    或者,可以选择清除活动中的缓存。