2016-03-28 37 views
1

我想删除所有的.apk文件。这工作正常!但是,它使我的设备速度变得很慢,一切都冻结了一会儿。有时它只是从记忆中消失。我如何使这个简单的过程成本更低?设备冻结,同时删除文件

setContentView(R.layout.activity_main); 

    // getting SDcard root path 
    File dir = new File(Environment.getExternalStorageDirectory() 
      .getAbsolutePath()); 
    walkdir(dir); 
} 

public void walkdir(File dir) { 
    String Patternjpg = ".apk"; 
    File listFile[] = dir.listFiles(); 
    if (listFile != null) { 
     for (int i = 0; i < listFile.length; i++) { 
      if (listFile[i].isDirectory()) { 
       walkdir(listFile[i]); 
      } else { 
       if (listFile[i].getName().endsWith(Patternjpg)) { 
        // Do what ever u want 
        listFile[i].delete(); 
       } 
      } 
     } 
    } 
} 

以及我的RAM 3场演出

回答

0

调用此声明在背景ThreadAsnycTaskdoInBackground方法

walkdir(dir); 

EDIT1
LinkOne
LinkTwo

EDIT2:

这是我的项目中的AsyncTask之一。如果需要,您应该根据您的要求进行定制!

class ExplorerDBOperation extends AsyncTask<Void,Boolean,Boolean>{ 
    ProgressDialog dialog; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      dialog = ProgressDialog.show(HomeActivity.this, "Please wait", "Processing........."); 
     } 
@Override 
     protected Boolean doInBackground(Void... params) { 
String Patternjpg = ".apk"; 
    File listFile[] = dir.listFiles(); 
    if (listFile != null) { 
     for (int i = 0; i < listFile.length; i++) { 
      if (listFile[i].isDirectory()) { 
       walkdir(listFile[i]); 
      } else { 
       if (listFile[i].getName().endsWith(Patternjpg)) { 
        // Do what ever u want 
        listFile[i].delete(); 
       } 
      } 
     } 
    } 
return true; 
} 
@Override 
     protected void onPostExecute(Boolean aBoolean) { 
      super.onPostExecute(aBoolean); 
      if(dialog!=null && dialog.isShowing()) 
      {dialog.dismiss();} 


     } 
} 

在你onCreate方法:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
// at the end of oncreate 
new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       new ExplorerDBOperation().execute(); 
      } 
     }, 300); 

} 
+0

哎,任何片段?谢谢!!:D – Emily

+0

也。它可以检测任务何时完成? – Emily

+0

检查我的编辑,包含的链接 – Stallion