2010-05-17 13 views
13

एंड्रॉइड की सेटिंग्स में, ऐप पर क्लिक करते समय "एप्लिकेशन प्रबंधित करें" गतिविधि में, डेटा को एप्लिकेशन, डेटा और कैश में विभाजित किया जाता है। कैश साफ़ करने के लिए एक बटन भी है। मेरा ऐप ऑडियो फाइलों को कैश करता है और मैं चाहता हूं कि उपयोगकर्ता इस बटन का उपयोग करके कैश को साफ़ करने में सक्षम हो। मैं उन्हें कैसे स्टोर करूं ताकि वे कैश के साथ लम्बे हो जाएं और उपयोगकर्ता उन्हें साफ़ कर सकता है? मैंने कोशिश की निम्न तकनीक के दोनों का उपयोग कर फ़ाइलें संग्रहीत किया है:मैं एंड्रॉइड के "साफ़ कैश" बटन का लाभ कैसे ले सकता हूं

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


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

दोनों ही मामलों में, इन फ़ाइलों को डाटा के रूप में और नहीं कैश सूचीबद्ध हैं।

+0

मुझे भी वही समस्या है। कष्टप्रद, एक्लिप्स में एंड्रॉइड डीडीएमएस मुझे/डेटा फ़ोल्डर ब्राउज़ करने नहीं देता है! इसलिए मुझे नहीं पता कि मेरी फाइलें कहाँ से सहेजी जा रही हैं, भले ही विभिन्न अनुमतियां "साफ़ कैश" बटन के उपयोग को सक्षम कर रही हों। – greenie

उत्तर

24

मैं आपकी समस्या का पुनरुत्पादन नहीं कर सकता, शायद कुछ और गलत है।

निम्न एप्लिकेशन का उपयोग करके, मैं कैश निर्देशिका में एक फ़ाइल बनाने में सक्षम था और फिर सेटिंग के तहत अनुप्रयोग प्रबंधित करें फ़ंक्शन का उपयोग करके इसे साफ़ कर सकता था। मुझे मैनिफेस्ट में कुछ भी नहीं बदलना पड़ा और मैं जो कह सकता हूं, 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 अंतरिक्ष कैश के लिए उपयोग में है।

+0

शानदार, मेरे लिए काम किया। +1 – greenie

+0

आप सही हैं। काम करने लगता है। मुझे कुछ और गलत करना होगा। धन्यवाद। –

+0

क्या 'getCacheDir() 'का उपयोग करते समय' Environment.getExternalStorageState() 'का उपयोग करके पढ़ने/लिखने की क्षमता को जांचने की अनुशंसा की जाती है? या इसके साथ कुछ करने के लिए नहीं? – Jago

4

मुझे लगता है कि आपको और android:manageSpaceActivity का उपयोग अपने <application> टैग के तहत 'एप्लिकेशन प्रबंधित करें' में उस विकल्प को देखने के लिए करना होगा। अधिक जानकारी के लिए http://developer.android.com/guide/topics/manifest/application-element.html देखें।

वैकल्पिक रूप से, आपके गतिविधि में कैश साफ़ करने का विकल्प है।

+1

ऐसा प्रतीत होता है अनुमति दें ClearUserData काम नहीं करेगा, लेकिन प्रबंधन स्पेसएक्टिविटी एक अच्छा विचार है। http://www.mail-archive.com/[email protected]/msg16507.html हालांकि, मैं अभी भी स्पष्ट कैश बटन का उपयोग करने में सक्षम होना चाहूंगा। –

संबंधित मुद्दे