日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android创建文件为unix格式,Recovery模式下/cache/recovery/目录下创建文件,开机后文件被删除...

發(fā)布時(shí)間:2025/3/19 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android创建文件为unix格式,Recovery模式下/cache/recovery/目录下创建文件,开机后文件被删除... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在一次需求的實(shí)現(xiàn)過(guò)程中需要在remcovery模式下,在/cache/recovery/目錄下創(chuàng)建一個(gè)日志文件用于記錄相關(guān)的日志信息,以便于在開(kāi)機(jī)后讀取這些日志信息,再根據(jù)日志信息做出相應(yīng)的處理,但是奇怪的是每當(dāng)開(kāi)機(jī)完成該文件不被系統(tǒng)自動(dòng)刪除,而系統(tǒng)中原有的日志文件(如升級(jí)log---last_log_r)等卻依然保留,因此在全局中搜索關(guān)鍵字”/cache/recovery/“發(fā)現(xiàn)了這其中的原因。

也就是說(shuō)系統(tǒng)會(huì)在系統(tǒng)啟動(dòng)完成后刪除/cache/recovery/目錄下不是以”last_"為前綴的文件,那么具體是如何實(shí)現(xiàn)的呢,我們一起來(lái)看一下。

首先在framework層有一個(gè)BootReceiver這樣一個(gè)類(lèi),用于處理系統(tǒng)啟動(dòng)完成后的善后工作,例如刪除舊的無(wú)關(guān)的日志信息等。

第一步:在framework/base/core/res下的清單文件AndroidManifest.xml中注冊(cè)廣播接收器BootReceiver,用于接收系統(tǒng)啟動(dòng)完成的廣播如下:

android:primaryUserOnly="true">

intent-filter>

receiver>

第二步:當(dāng)系統(tǒng)啟動(dòng)完成后,這個(gè)廣播接收器會(huì)接收到系統(tǒng)啟動(dòng)完成的廣播之后在onReceive下執(zhí)行l(wèi)ogBootEvents函數(shù),并執(zhí)行RecoverySystem下的handleAftermath()函數(shù),最終刪除在/cache/recovery下不是以last_為前綴的文件。具體函數(shù)如下:

/**

*?Called?after?booting?to?process?and?remove?recovery-related?files.

*?@return?the?log?file?from?recovery,?or?null?if?none?was?found.

*

*?@hide

*/

publicstaticString?handleAftermath()?{

//?Record?the?tail?of?the?LOG_FILE

Log.d(TAG,"Entering?the?handleAftermath?method");

String?log?=?null;

try{

log?=?FileUtils.readTextFile(LOG_FILE,?-LOG_FILE_MAX_LENGTH,?"...\n");

}?catch(FileNotFoundException?e)?{

Log.i(TAG,?"No?recovery?log?file");

}?catch(IOException?e)?{

Log.e(TAG,?"Error?reading?recovery?log",?e);

}

//?Delete?everything?in?RECOVERY_DIR?except?those?beginning

//?with?LAST_PREFIX

String[]?names?=?RECOVERY_DIR.list();

for(inti?=0;?names?!=null&&?i

if(names[i].startsWith(LAST_PREFIX))continue;

File?f?=?newFile(RECOVERY_DIR,?names[i]);

if(!f.delete())?{

Log.e(TAG,?"Can't?delete:?"+?f);

}?else{

Log.i(TAG,?"Deleted:?"+?f);

}

}

returnlog;

}

注:如果我們需要在/cache/recovery/目錄下保存文件,我們可以以"last_"為前綴進(jìn)行命名也可以在RecoverySystem中修改相關(guān)的邏輯。

總結(jié)

以上是生活随笔為你收集整理的Android创建文件为unix格式,Recovery模式下/cache/recovery/目录下创建文件,开机后文件被删除...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。