BroadCaseReceiver使用,动态注册,在项目中调用

今天写一个BroadCaseReceiver在项目中的使用,BroadCaseReceiver删除文件夹中所有文件的操作。

 

首先在你的Activity中注册你的BroadcaseReceiver,在android7.0之后,BroadCaseReceiver静态注册是收不到广播的,别踩坑!

 public BRClearUeLog clearUeLog;

if (clearUeLog == null) {
            clearUeLog = new BRClearUeLog();
            IntentFilter intentFilter = new IntentFilter();

           //Action是你给你的BroadcaseReceiver起的标识码,俗称tag
            intentFilter.addAction("com.android.clearUeLog");
            registerReceiver(clearUeLog, intentFilter);

           //这里可以简写为registerReceiver(clearUeLog , new IntentFilter("com.android.clearUeLog"));
        }

当然有注册就有反注册,在你的Activity结束的时候进行反注册,优化内存空间,避免内存溢出

if (clearUeLog != null) {
            unregisterReceiver(clearUeLog);
            clearUeLog = null;
        }

 

然后是Activity的调用:

       Intent intent = new Intent();  

      //与上面的Action所对应
        intent.setAction("com.android.clearUeLog");  

      //如果传输数据可以用此方式
       //intent.putExtra("message","我是数据");  
        sendBroadcast(intent);

最后大招来了,BroadcaseReceiver正文:

/**
 * 删除adbtestcase文件夹下的所有文件,并反馈是否清理成功与否
 * @author Android
 *
 */
public class BRClearUeLog extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        //如果有传输的Intent数据intent.getStringExtra("message")取出
        String path="删除文件的路径";
        
        deleteDir(path);
        
        isNull(path);
        
    }
    
    //检查adbtestcase文件夹下是否为空
    private void isNull(String path) {
        // TODO Auto-generated method stub

        File file = new File(path);
        File[] listFiles = file.listFiles();
        if (listFiles.length > 0) {
            //文件夹下有文件
            ConfigTest.currentCmdState="清理失败";
        } else {
            // 文件夹下没有文件
            ConfigTest.currentCmdState="清理成功";
        }
    }

    //删除文件夹和文件夹里面的文件
    private  void deleteDir(String pPath) {
        File dir = new File(pPath);
        deleteDirWihtFile(dir);
    }

    private void deleteDirWihtFile(File dir) {
        if (dir == null || !dir.exists() || !dir.isDirectory()) {
            return;
        } else {
            File[] files = dir.listFiles();
            Log.e("motejia", "deleteDirWihtFile: ==============="+files.length );
            for (File file : dir.listFiles()) {
                if (file.isFile()) {
                    file.delete(); // 删除所有文件
                } else if (file.isDirectory()) {
                    deleteDirWihtFile(file); // 递规的方式删除文件夹
                    file.delete();
                }
            }

            // dir.delete();// 删除目录本身
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章