এখানে আরও বিস্তারিত ব্যাখ্যা দেওয়া হল:
কোরিওগ্রাফার অ্যাপ্লিকেশনগুলিকে vsync এ নিজেকে সংযুক্ত করতে দেয় এবং কার্য সম্পাদনকে উন্নত করতে জিনিসগুলিকে যথাযথভাবে সময় দেয়।
অ্যানড্রয়েড ভিউ অ্যানিমেশনগুলি অভ্যন্তরীণভাবে একই উদ্দেশ্যে কোরিওগ্রাফার ব্যবহার করে: অ্যানিমেশনগুলি সঠিকভাবে সময় দেওয়ার জন্য এবং সম্ভবত কার্য সম্পাদন উন্নত করতে।
কোরিওগ্রাফারকে যেহেতু প্রতিটি ভিএনসিএন ইভেন্টের বিষয়ে বলা হয়, তাই আমি বলতে পারি যে রানওয়েবলগুলির মধ্যে একটি কোরিওগ্রাফার পাশ করেছেন pপস্ট * এপিস একটি ফ্রেমের সময় শেষ করতে না পেরে ফ্রেমগুলি এড়িয়ে যেতে পারে।
আমার বোঝার মধ্যে কোরিওগ্রাফার কেবল ফ্রেম স্কিপিং সনাক্ত করতে পারে। কেন এটি ঘটে তা বলার উপায় নেই।
বার্তা "অ্যাপ্লিকেশনটি এর মূল থ্রেডটিতে খুব বেশি কাজ করছে।" বিভ্রান্তিকর হতে পারে।
উত্স:
লোগকটে কোরিওগ্রাফার বার্তার অর্থ
কেন আপনার উদ্বিগ্ন হওয়া উচিত
যখন এই বার্তাটি অ্যান্ড্রয়েড এমুলেটরটিতে নেমে আসে এবং এড়িয়ে যাওয়া ফ্রেমের সংখ্যা মোটামুটি ছোট হয় (<100) তখন আপনি এমুলেটরটি ধীর হয়ে যাওয়ার নিরাপদ বাজি নিতে পারেন - যা প্রায় সবসময়ই ঘটে। তবে যদি এড়িয়ে যাওয়া ফ্রেমের সংখ্যা এবং বৃহত্তর এবং 300+ এর ক্রম হয় তবে আপনার কোডটি নিয়ে কিছু গুরুতর সমস্যা হতে পারে। আইওএস এবং উইন্ডো ডিভাইসের বিপরীতে অ্যান্ড্রয়েড ডিভাইসগুলি একটি বিশাল হার্ডওয়্যারে আসে। র্যাম এবং সিপিইউ পরিবর্তিত হয় এবং আপনি যদি সমস্ত ডিভাইসে যুক্তিসঙ্গত পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা চান তবে আপনাকে এই জিনিসটি ঠিক করতে হবে। যখন ফ্রেমগুলি এড়িয়ে যায় তখন ইউআই ধীর এবং দীর্ঘস্থায়ী হয় যা কোনও পছন্দসই ব্যবহারকারীর অভিজ্ঞতা নয়।
কিভাবে এটা মেরামত করা যেতে পারে
এটি স্থির করার জন্য নোডগুলি সনাক্ত করা দরকার যেখানে প্রসেসিংয়ের দীর্ঘ সময় থাকতে পারে বা সম্ভবত ঘটতে পারে। সর্বোত্তম উপায় হ'ল মূল ইউআই থ্রেড থেকে আলাদা কোনও থ্রেডে ছোট বা বড় যাই হোক না কেন সমস্ত প্রসেসিং করা। সুতরাং এটি এসকিউএল ডেটাবেস ডেটা ফর্ম অ্যাক্সেস করা বা কিছু কঠিন গণিত করা বা কেবল একটি অ্যারে বাছাই করা - এটি অন্য থ্রেডে করুন
এখন এখানে একটি ধরা আছে, আপনি এই ক্রিয়াকলাপগুলি করার জন্য একটি নতুন থ্রেড তৈরি করবেন এবং আপনি যখন নিজের অ্যাপ্লিকেশনটি চালাবেন, তখন এটি ক্র্যাশ হয়ে যাবে "কেবলমাত্র মূল থ্রেড যা একটি ভিউ হায়ারার্কি তৈরি করেছে তার দৃষ্টিভঙ্গিগুলিকে স্পর্শ করতে পারে"। আপনার এই সত্যটি জানতে হবে যে অ্যান্ড্রয়েডের ইউআই কেবলমাত্র মূল থ্রেড বা ইউআই থ্রেড দ্বারা পরিবর্তন করা যেতে পারে। অন্য যে কোনও থ্রেড যা করার চেষ্টা করে তা ব্যর্থ হয় এবং এই ত্রুটিটি দিয়ে ক্রাশ হয়। আপনার যা করা দরকার তা হ'ল রানওনউইথ্রেডের ভিতরে একটি নতুন রান্নেবল তৈরি করা এবং এই রান রানযোগ্যের ভিতরে আপনাকে ইউআই জড়িত সমস্ত অপারেশন করা উচিত। এখানে একটি উদাহরণ খুঁজুন ।
সুতরাং মূল থ্রেডের বাইরে ডেটা প্রক্রিয়াকরণের জন্য আমাদের থ্রেড এবং রান্নেবল আছে, আর কি? অ্যান্ড্রয়েডে অ্যাসিঙ্কটাস্ক রয়েছে যা ইউআই থ্রেডে দীর্ঘ সময়ের প্রক্রিয়াগুলি সক্ষম করে। আপনার অ্যাপ্লিকেশনগুলি ডেটা চালিত বা ওয়েব এপিআই চালিত হয় বা ক্যানভাস ব্যবহার করে যেমন বিল্ড তৈরির মতো জটিল ইউআই ব্যবহার করে তখন এটি সবচেয়ে কার্যকর useful অ্যাসিঙ্কটাস্কের শক্তিটি হ'ল এটি পটভূমিতে জিনিসগুলি করার অনুমতি দেয় এবং একবার আপনি প্রক্রিয়াজাতকরণ শেষ করার পরে আপনি কোনও পিছিয়ে থাকার প্রভাব ছাড়াই কেবল ইউআইতে প্রয়োজনীয় ক্রিয়াগুলি করতে পারেন। এটি সম্ভব হয়েছে কারণ অ্যাসিঙ্কটাস্কটি ক্রিয়াকলাপের ইউআই থ্রেড থেকে উদ্ভূত হয় - আপনি ইউআইতে অ্যাসিঙ্কটাস্কের মাধ্যমে যে সমস্ত ক্রিয়াকলাপগুলি করা হয় তা হ'ল মূল ইউআই থ্রেড থেকে আলাদা থ্রেড, ব্যবহারকারীর মিথস্ক্রিয়ায় কোনও বাধা নেই।
সুতরাং মসৃণ অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি তৈরি করার জন্য আপনার যা জানা দরকার এবং যতদূর আমি জানি প্রতিটি শিক্ষানবিশ তার কনসোলটিতে এই বার্তাটি পেয়ে যায়।