গ্রেপকোডে প্যাকেজম্যানেজারসেবার ক্লাসে খনন করা (সতর্কতা: এই শ্রেণীর ফাইলটি বিশাল, আপনার ব্রাউজারটি রেন্ডার করার সময় একটি মোটামুটি বিগ কেটে দিতে পারে), নিম্নলিখিত প্রসঙ্গে আশাবাদী বার্তা প্রদর্শিত হবে:
public void performBootDexOpt() {
ArrayList<PackageParser.Package> pkgs = null;
synchronized (mPackages) {
if (mDeferredDexOpt.size() > 0) {
pkgs = new ArrayList<PackageParser.Package>(mDeferredDexOpt);
mDeferredDexOpt.clear();
}
}
if (pkgs != null) {
for (int i=0; i<pkgs.size(); i++) {
if (!isFirstBoot()) {
try {
ActivityManagerNative.getDefault().showBootMessage(
mContext.getResources().getString(
com.android.internal.R.string.android_upgrading_apk,
i+1, pkgs.size()), true);
} catch (RemoteException e) {
}
}
PackageParser.Package p = pkgs.get(i);
synchronized (mInstallLock) {
if (!p.mDidDexOpt) {
performDexOptLI(p, false, false);
}
}
}
}
}
এখানে মানটি com.android.internal.R.string.android_upgrading_apk
হল "অপটিমাইজিং অ্যাপ্লিকেশন" স্ট্রিং। সাধারণ ব্যক্তির শর্তাবলী, এটি ডিভাইসের প্রতিটি অ্যাপ্লিকেশনটির মধ্য দিয়ে যায়, showBootMessage()
কল performDexOptLI()
করে বার্তাটি স্ক্রিনে আপডেট করে এবং তারপরে অ্যাপ্লিকেশনটিতে কল করে। স্বাভাবিকভাবেই, পরবর্তী প্রশ্নটি "কী করে performDexOptLI()
?" ভাল এখানে দেখতে যা এখানে:
private int performDexOptLI(PackageParser.Package pkg, boolean forceDex, boolean defer) {
boolean performed = false;
if ((pkg.applicationInfo.flags&ApplicationInfo.FLAG_HAS_CODE) != 0) {
String path = pkg.mScanPath;
int ret = 0;
try {
if (forceDex || dalvik.system.DexFile.isDexOptNeeded(path)) {
if (!forceDex && defer) {
mDeferredDexOpt.add(pkg);
return DEX_OPT_DEFERRED;
} else {
Log.i(TAG, "Running dexopt on: " + pkg.applicationInfo.packageName);
ret = mInstaller.dexopt(path, pkg.applicationInfo.uid,
!isForwardLocked(pkg));
pkg.mDidDexOpt = true;
performed = true;
}
}
} catch (...) {
//I've trimmed out a bunch of exception handling here, it basically just writes to
//the log and sets the return value
}
}
return performed ? DEX_OPT_PERFORMED : DEX_OPT_SKIPPED;
}
সুতরাং dexopt
এটি প্রয়োজনীয় সমস্ত অ্যাপ্লিকেশনগুলিতে ইউটিলিটিটির জন্য প্রার্থনা করে । সম্পর্কিত কোনও সাধারণ ডকুমেন্টেশন খুঁজে পাওয়া কঠিন dexopt
, তবে এখানে একটি উচ্চ-স্তরের ওভারভিউ রয়েছে । এটি যথেষ্ট বলুন, এটি আপনার ডিভাইসে অ্যাপ্লিকেশনগুলির কার্যকারিতা উন্নত করতে সহায়তা করে এমন জাস্ট ইন টাইম (জেআইটি) সংকলক দ্বারা এটি ব্যবহৃত হচ্ছে যা এটি আপনার ডিভাইসের অ্যাপ্লিকেশনগুলির কার্যকারিতা উন্নত করতে সহায়তা করে এবং এটি ভিএম ক্যাশে আউটপুট করে। এটি ড্যাশ ফাইলগুলিকে ক্যাশে সংরক্ষণ করার কারণ হ'ল অন্যথায় অ্যাপটি চালাতে চাইলে যে কোনও সময় এগুলিকে পুনরায় আহরণ করতে হবে (.apk কেবল একটি সংরক্ষণাগার, এটি কোনও এক্সিকিউটেবল ফাইল নয়!)। সুতরাং, এগুলি /data/dalvik-cache
পুনরায় ব্যবহারের জন্য তাদের কেবল ডিরেক্টরিতে রেখে দেওয়া বোঝায় এবং dexopt
প্রাথমিক নিষ্কাশন করার সময় কিছুটা অপ্টিমাইজেশন করে।
টিএল; ডিআর (বা নন-প্রোগ্রামার সংক্ষিপ্তসার, আমার ধারণা): এটি ডালভিক ক্যাশে পুনর্গঠন করছে।