নতুন অ্যান্ড্রয়েড সংস্করণগুলি প্রথম রিবুটটিতে কী ধরণের অ্যাপ অপ্টিমাইজেশন করে?


28

আমি আমার ফোন ক্যারিয়ার, ভোডাফোন আইটি, আমার নেক্সাস এস-তে অ্যান্ড্রয়েড আইসক্রিম স্যান্ডউইচ 4.0.০.৪ এ অফিশিয়াল ওটিএ গুগল আপডেট থেকে পেয়েছি, আপডেটের পরে যখন প্রথমবারের জন্য স্বয়ংক্রিয়ভাবে রিবুট হচ্ছে তখন সিস্টেমটি একটি নোটিশ প্রকাশ করে জানিয়েছে যে এটি অপ্টিমাইজ করছে ইনস্টল অ্যাপস। Android পুনরায় বুট করার সময় অ্যান্ড্রয়েড 4.0+ কী ধরণের অপ্টিমাইজেশন করে?

উত্তর:


40

গ্রেপকোডে প্যাকেজম্যানেজারসেবার ক্লাসে খনন করা (সতর্কতা: এই শ্রেণীর ফাইলটি বিশাল, আপনার ব্রাউজারটি রেন্ডার করার সময় একটি মোটামুটি বিগ কেটে দিতে পারে), নিম্নলিখিত প্রসঙ্গে আশাবাদী বার্তা প্রদর্শিত হবে:

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প্রাথমিক নিষ্কাশন করার সময় কিছুটা অপ্টিমাইজেশন করে।


টিএল; ডিআর (বা নন-প্রোগ্রামার সংক্ষিপ্তসার, আমার ধারণা): এটি ডালভিক ক্যাশে পুনর্গঠন করছে।


সিস্টেমটি সমস্ত ইনস্টল থাকা অ্যাপ্লিকেশনগুলির মধ্য দিয়ে যাওয়ার সময় আমি সেই বার্তাটি দেখেছিলাম। দুর্দান্ত উত্তরের জন্য ধন্যবাদ।
পাওলো আমোরোসো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.