অ্যাপ্লিকেশনটি এর মূল থ্রেডে খুব বেশি কাজ করছে


379

আমি অ্যান্ড্রয়েড এসডিকে / এপিআই পরিবেশে নতুন। এটিই প্রথম আমি কোন প্লট / চার্ট আঁকার চেষ্টা করছি। আমি বিভিন্ন ধরণের নমুনা কোডগুলি এমুলেটরটি 3 টি পৃথক ফ্রি লাইব্রেরি ব্যবহার করে চালানোর চেষ্টা করেছি, বিন্যাসের স্ক্রিনে কিছুই দেখাচ্ছে না। লগক্যাটটি নীচের বার্তার পুনরাবৃত্তি করছে:

 ডাব্লু / ট্রেস (1378): নেটিজগেটেবলড ট্যাগগুলি থেকে অপ্রত্যাশিত মান: 0
 আই / কোরিওগ্রাফার (1378): 55 টি ফ্রেম এড়িয়ে গেছেন! অ্যাপ্লিকেশনটি এর মূল থ্রেডে খুব বেশি কাজ করছে।

সমস্যাটি স্থায়ী হয়নি এবং আমি লাইসেন্সগ্রন্থাগারের একটি মূল্যায়নের অনুলিপি সম্পর্কিত একটি নমুনা কোড চালানোর সময় চার্টটি কাজ করেছিল।


2
আপনি কি আলাদা আলাদা থ্রেডে চার্ট আঁকছেন?
Areks

আপনার মন্তব্যের জন্য ধন্যবাদ, আমি এটিকে আরও পরিষ্কার করার জন্য প্রশ্নটি সম্পাদনা করেছি। চলমান ক্রিয়াকলাপটি দেখায় যে আমি এমন একটি ক্রিয়াকলাপ চালাচ্ছি যার কোনও নকশা নেই তার সাদা বিন্যাস => রয়েছে।
ব্যবহারকারী 2038135

1
@ আরকস না, আমি আলাদা থ্রেড ব্যবহার করছি না।
ব্যবহারকারী 2038135

1
আমার মনে হয় আপনার মূল থ্রেডে দীর্ঘ ক্রিয়াকলাপ করার জন্য মোটেও সুপারিশ করা হয়নি, কারণ এটি পুরো অ্যাপ্লিকেশনকে হিমশীতল করে, আপনি কীভাবে এখানে থ্রেডগুলি ব্যবহার করতে পারেন তা পড়তে পারেন: stackoverflow.com/questions/3391272/… "কোডটি উপেক্ষা করুন এইচটিটিপি অনুরোধ "এবং সেখানে আপনার সম্ভাব্য দীর্ঘ অপারেশনগুলি সম্পাদন করুন।
আরেক্সস

1
আপনি কেন অনুসন্ধান করার চেষ্টা করছেন না, আপনি কোরিওগ্রাফার সম্পর্কে তথ্য পাবেন। আমি আপনাকে এই উত্তরটি পড়ার পরামর্শ দিচ্ছি: স্ট্যাকওভারফ্লো
গ্যাব্রিয়েল এস্তেবান

উত্তর:


479

থেকে নেওয়া: অ্যান্ড্রয়েড ইউআই: ফিক্সিং এড়ানো ফ্রেমগুলি

অ্যান্ড্রয়েড অ্যাপ্লিকেশন বিকাশ শুরু করা যে কেউ এই বার্তাটি লককটে দেখেছেন “কোরিওগ্রাফার (এবিসি): এক্সএক্স ফ্রেম এড়িয়ে গেছেন ! অ্যাপ্লিকেশনটি এর মূল থ্রেডে খুব বেশি কাজ করছে। " সুতরাং এর প্রকৃত অর্থ কী, আপনি কেন উদ্বিগ্ন হন এবং কীভাবে এটি সমাধান করবেন।

এর অর্থ হ'ল আপনার কোডটি প্রক্রিয়া করতে অনেক সময় নিচ্ছে এবং ফ্রেমগুলি এড়িয়ে চলেছে কারণ এটি হয়ত আপনার ভারী প্রক্রিয়াকরণের কারণে বা ডিবি অ্যাক্সেস বা অন্য কোনও কারণে যার ফলে থ্রেড তৈরি হয় কিছুক্ষণ থামো

এখানে আরও বিস্তারিত ব্যাখ্যা দেওয়া হল:

কোরিওগ্রাফার অ্যাপ্লিকেশনগুলিকে vsync এ নিজেকে সংযুক্ত করতে দেয় এবং কার্য সম্পাদনকে উন্নত করতে জিনিসগুলিকে যথাযথভাবে সময় দেয়।

অ্যানড্রয়েড ভিউ অ্যানিমেশনগুলি অভ্যন্তরীণভাবে একই উদ্দেশ্যে কোরিওগ্রাফার ব্যবহার করে: অ্যানিমেশনগুলি সঠিকভাবে সময় দেওয়ার জন্য এবং সম্ভবত কার্য সম্পাদন উন্নত করতে।

কোরিওগ্রাফারকে যেহেতু প্রতিটি ভিএনসিএন ইভেন্টের বিষয়ে বলা হয়, তাই আমি বলতে পারি যে রানওয়েবলগুলির মধ্যে একটি কোরিওগ্রাফার পাশ করেছেন pপস্ট * এপিস একটি ফ্রেমের সময় শেষ করতে না পেরে ফ্রেমগুলি এড়িয়ে যেতে পারে।

আমার বোঝার মধ্যে কোরিওগ্রাফার কেবল ফ্রেম স্কিপিং সনাক্ত করতে পারে। কেন এটি ঘটে তা বলার উপায় নেই।

বার্তা "অ্যাপ্লিকেশনটি এর মূল থ্রেডটিতে খুব বেশি কাজ করছে।" বিভ্রান্তিকর হতে পারে।

উত্স: লোগকটে কোরিওগ্রাফার বার্তার অর্থ

কেন আপনার উদ্বিগ্ন হওয়া উচিত

যখন এই বার্তাটি অ্যান্ড্রয়েড এমুলেটরটিতে নেমে আসে এবং এড়িয়ে যাওয়া ফ্রেমের সংখ্যা মোটামুটি ছোট হয় (<100) তখন আপনি এমুলেটরটি ধীর হয়ে যাওয়ার নিরাপদ বাজি নিতে পারেন - যা প্রায় সবসময়ই ঘটে। তবে যদি এড়িয়ে যাওয়া ফ্রেমের সংখ্যা এবং বৃহত্তর এবং 300+ এর ক্রম হয় তবে আপনার কোডটি নিয়ে কিছু গুরুতর সমস্যা হতে পারে। আইওএস এবং উইন্ডো ডিভাইসের বিপরীতে অ্যান্ড্রয়েড ডিভাইসগুলি একটি বিশাল হার্ডওয়্যারে আসে। র‌্যাম এবং সিপিইউ পরিবর্তিত হয় এবং আপনি যদি সমস্ত ডিভাইসে যুক্তিসঙ্গত পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা চান তবে আপনাকে এই জিনিসটি ঠিক করতে হবে। যখন ফ্রেমগুলি এড়িয়ে যায় তখন ইউআই ধীর এবং দীর্ঘস্থায়ী হয় যা কোনও পছন্দসই ব্যবহারকারীর অভিজ্ঞতা নয়।

কিভাবে এটা মেরামত করা যেতে পারে

এটি স্থির করার জন্য নোডগুলি সনাক্ত করা দরকার যেখানে প্রসেসিংয়ের দীর্ঘ সময় থাকতে পারে বা সম্ভবত ঘটতে পারে। সর্বোত্তম উপায় হ'ল মূল ইউআই থ্রেড থেকে আলাদা কোনও থ্রেডে ছোট বা বড় যাই হোক না কেন সমস্ত প্রসেসিং করা। সুতরাং এটি এসকিউএল ডেটাবেস ডেটা ফর্ম অ্যাক্সেস করা বা কিছু কঠিন গণিত করা বা কেবল একটি অ্যারে বাছাই করা - এটি অন্য থ্রেডে করুন

এখন এখানে একটি ধরা আছে, আপনি এই ক্রিয়াকলাপগুলি করার জন্য একটি নতুন থ্রেড তৈরি করবেন এবং আপনি যখন নিজের অ্যাপ্লিকেশনটি চালাবেন, তখন এটি ক্র্যাশ হয়ে যাবে "কেবলমাত্র মূল থ্রেড যা একটি ভিউ হায়ারার্কি তৈরি করেছে তার দৃষ্টিভঙ্গিগুলিকে স্পর্শ করতে পারে"। আপনার এই সত্যটি জানতে হবে যে অ্যান্ড্রয়েডের ইউআই কেবলমাত্র মূল থ্রেড বা ইউআই থ্রেড দ্বারা পরিবর্তন করা যেতে পারে। অন্য যে কোনও থ্রেড যা করার চেষ্টা করে তা ব্যর্থ হয় এবং এই ত্রুটিটি দিয়ে ক্রাশ হয়। আপনার যা করা দরকার তা হ'ল রানওনউইথ্রেডের ভিতরে একটি নতুন রান্নেবল তৈরি করা এবং এই রান রানযোগ্যের ভিতরে আপনাকে ইউআই জড়িত সমস্ত অপারেশন করা উচিত। এখানে একটি উদাহরণ খুঁজুন ।

সুতরাং মূল থ্রেডের বাইরে ডেটা প্রক্রিয়াকরণের জন্য আমাদের থ্রেড এবং রান্নেবল আছে, আর কি? অ্যান্ড্রয়েডে অ্যাসিঙ্কটাস্ক রয়েছে যা ইউআই থ্রেডে দীর্ঘ সময়ের প্রক্রিয়াগুলি সক্ষম করে। আপনার অ্যাপ্লিকেশনগুলি ডেটা চালিত বা ওয়েব এপিআই চালিত হয় বা ক্যানভাস ব্যবহার করে যেমন বিল্ড তৈরির মতো জটিল ইউআই ব্যবহার করে তখন এটি সবচেয়ে কার্যকর useful অ্যাসিঙ্কটাস্কের শক্তিটি হ'ল এটি পটভূমিতে জিনিসগুলি করার অনুমতি দেয় এবং একবার আপনি প্রক্রিয়াজাতকরণ শেষ করার পরে আপনি কোনও পিছিয়ে থাকার প্রভাব ছাড়াই কেবল ইউআইতে প্রয়োজনীয় ক্রিয়াগুলি করতে পারেন। এটি সম্ভব হয়েছে কারণ অ্যাসিঙ্কটাস্কটি ক্রিয়াকলাপের ইউআই থ্রেড থেকে উদ্ভূত হয় - আপনি ইউআইতে অ্যাসিঙ্কটাস্কের মাধ্যমে যে সমস্ত ক্রিয়াকলাপগুলি করা হয় তা হ'ল মূল ইউআই থ্রেড থেকে আলাদা থ্রেড, ব্যবহারকারীর মিথস্ক্রিয়ায় কোনও বাধা নেই।

সুতরাং মসৃণ অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলি তৈরি করার জন্য আপনার যা জানা দরকার এবং যতদূর আমি জানি প্রতিটি শিক্ষানবিশ তার কনসোলটিতে এই বার্তাটি পেয়ে যায়।


41
আমার সবেমাত্র একটি অ্যাপ্লিকেশন রয়েছে যেখানে আমি কোনও বোতামটি ক্লিক করলে বোতামের পরিবর্তন এবং বোতামের পটভূমি চিত্রটি অপরিবর্তনীয়। আমি কীভাবে খুব বেশি কাজ করছি :(
রিমানিয়ান 8985

1
@ রিমিয়ান ৯৮৮৮ - বোতামটির জন্য ব্যাকগ্রাউন্ড চিত্র পরিবর্তন (ধরে নিলে আপনি এই চিত্রটি ডাউনলোড করছেন) একটি এসিঙ্কটাস্কে করা উচিত - এটি সেই ডাউনলোডের ব্যাকগ্রাউন্ড অপারেশন সম্পাদন করে ফলাফলটি ইউআই থ্রেডে প্রকাশ করা (চিত্রটি ফিরে সরবরাহ করুন)। অ্যান্ড্রয়েড রেফারেন্স লিঙ্কটি দেখুন
বেনজমিনসিলা

11
@ বেজামিনসিলা অ্যাসিঙ্কটাস্কে পটভূমি পরিবর্তন করছেন? সত্যি?
ব্যবহারকারী

11
@ ব্যবহারকারী 25 "ধরে
ফরেস্টপকিন্সা

"যখন এই বার্তাটি অ্যান্ড্রয়েড এমুলেটরটিতে নেমে আসে এবং এড়িয়ে যাওয়া ফ্রেমের সংখ্যা মোটামুটি ছোট হয় (<100) তখন আপনি এমুলেটরটি ধীর হয়ে যাওয়ার নিরাপদ বাজি নিতে পারেন" এটি কি আজও প্রযোজ্য? অনুকরণকারী খুব দ্রুত অধিকার পেয়েছেন?
রবিন ডিজখফ

243

অন্যরা যেমন উপরে উত্তর দিয়েছে, "55 ফ্রেম এড়িয়ে গেছেন!" মানে কিছু ভারী প্রক্রিয়াজাতকরণ আপনার প্রয়োগে রয়েছে in

আমার ক্ষেত্রে, আমার আবেদনে কোনও ভারী প্রক্রিয়া নেই। আমি ডাবল এবং ট্রিপল সবকিছু যাচাই করেছিলাম এবং সেই প্রক্রিয়াটি সরিয়ে দিয়েছি বলে মনে করি এটি কিছুটা ভারী।

কেবলমাত্র কঙ্কালটি না রেখে আমি খণ্ডগুলি, ক্রিয়াকলাপগুলি, গ্রন্থাগারগুলি সরিয়েছি। তবুও সমস্যাটি সরে যায়নি। আমি উত্সগুলি যাচাই করার সিদ্ধান্ত নিয়েছি এবং আমি ব্যবহার করেছি এমন কিছু আইকন এবং পটভূমি দেখতে পেয়েছি যেগুলি এই সংস্থাগুলির আকার চেক করতে ভুলে গিয়েছিলাম।

সুতরাং, আমার পরামর্শটি যদি উপরের উত্তরগুলির মধ্যে কোনও উত্তর না দেয় তবে আপনি নিজের সংস্থান ফাইলগুলির আকারও পরীক্ষা করতে পারেন।


1
আমার জন্যও কাজ করেছেন। আমার একটি অ্যাপ্লিকেশন ছিল যা খুব কম কাজ করছে তবে ধীর এবং পিছিয়ে ছিল। আমি এড়িয়ে যাওয়া ফ্রেমের লগগুলি বজায় রেখেছি। একবার আমি আমার ক্রিয়াকলাপ থেকে পটভূমি সরিয়ে ফেললাম সবকিছু ঠিক আছে। ধন্যবাদ!
আকবরবী

দুর্দান্ত উত্তর, আমি বিশ্বাস করি এটি ঠিক আমার সমস্যা ছিল। আমি অন্যান্য কয়েকটি (বেশ জড়িত) সমাধানের চেষ্টা করেছি এবং অ্যাপটি ঠিক ততই ধীর ছিল slow আমি সমস্ত ওয়েব পরিষেবাদি বের করেছি এবং আমার কোডটিকে হাড়িতে উন্নত করার চেষ্টা করেছি। কাজ হয়নি, তখন আমি এই দেখেছি। আমি আমার ব্যাকগ্রাউন্ড চিত্রটি (আমার কাছে থাকা সবচেয়ে বড় চিত্র) সরিয়ে ফেলার সাথে সাথেই পুরানো "ধীর" কোড থাকা সত্ত্বেও আপনি অ্যাপ্লিকেশানগুলিতে ক্লিক করতে পারবেন তত দ্রুত কাজ করে।
এম বারবোসা

আপনি আমার দিন তৈরি!
নিকোলাস মাস্ট্রোমারিনো

:) আপনি একটি বিমূর্ত প্রতিভা।
মেটিন ইলহান

@ ব্যাটশেভা এটি 1 কেবি হওয়া দরকার না। এটি আপনার প্রয়োজনের উপর নির্ভর করে, আসুন আপনাকে পরিষ্কার চিত্রের প্রয়োজন বলুন, আপনি উচ্চতর রেজোলিউশন ব্যবহার করতে পারেন, তবে নিশ্চিত করুন যে আপনি বিভিন্ন আকারের বিভিন্ন সংস্থার বিভিন্ন ফোল্ডারে বিভক্ত হয়েছেন।
সিথু

61

আমারও একই সমস্যা ছিল।
মাই এমন একটি ক্ষেত্রে ছিল যেখানে আমি ব্যাকগ্রাউন্ড চিত্র ব্যবহার করছিলাম যা অঙ্কনযোগ্য ছিল। বিশেষ চিত্রটি প্রায় 130kB এর ছিল এবং আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে স্প্ল্যাশ স্ক্রিন এবং হোম পৃষ্ঠার সময় ব্যবহৃত হয়েছিল।

সমাধান - আমি কেবল সেই নির্দিষ্ট চিত্রটি অঙ্কনযোগ্য-এক্সএক্সএক্সএক্স ফোল্ডারে ড্রইবলগুলি থেকে স্থানান্তরিত করেছি এবং ব্যাকগ্রাউন্ডে দখল করা প্রচুর মেমরি মুক্ত করতে সক্ষম হয়েছি এবং স্কিপিং ফ্রেমগুলি আর এড়ানো যায় না।

ব্যাকগ্রাউন্ডের অঙ্কনযোগ্য ফাইলগুলি সংরক্ষণের জন্য আপডেট 'নোডপ' অঙ্কনযোগ্য সংস্থান ফোল্ডারটি ব্যবহার করুন।
একটি ঘনত্বের যোগ্য অঙ্কনযোগ্য ফোল্ডার বা অঙ্কনযোগ্য-নোডপি কি অগ্রাধিকার গ্রহণ করবে?


7
আমি আমার বড় পটভূমির চিত্রটি অঙ্কনযোগ্য থেকে মিম্যাপ-এক্সএক্সএক্সএইচডিপি তে স্থানান্তরিত করেছি এবং এটি কৌশলটি করেছে!
বিগ্লেপা

আপনি অনেক সাহায্য করেছেন। ধন্যবাদ
এনড্রয়েড

2
এই সমাধানটি কৌশলটি করছে। এর drawable-xxxhdpiপরিবর্তে আমি ফোল্ডারটি ব্যবহার করছি drawableযা নাটকীয়ভাবে ব্যবহৃত মেমরিটিকে হ্রাস করে (~ 70 শতাংশ কম)। এটিও জেনে রাখা ভাল, একই আকারের স্ক্রিনগুলি ডিপিআই আকারে পৃথক হয়। তাদের মধ্যে পিক্সেলে অনুপাত ldpi = 1:0.75, mdpi = 1:1, hdpi = 1:1.5, xhdpi = 1:2, xxhdpi = 1:3, xxxhdpi = 1:4drawable-xxxhdpiফোল্ডারটি ব্যবহার করে আপনি মেমোরি এবং সিপিইউ খরচ হ্রাস করে তা আপনার ডিভাইসের স্ক্রিনাইজে চিত্রগুলি ডাউনস্কেল করার অনুমতি দেয়।
টিমো বাহর

2
থেকে চিত্রগুলি মুভিং drawableকরার drawable-nodpiপেয়ে করা থেকে আটকায় আবেদন Out of Memory Error
শ্রুতি

হায় খোদা ... ধন্যবাদ! আমার আঁকার যোগ্য ফোল্ডারের মধ্যে একটি চিত্র ছিল এবং এটি আমার অ্যাপ্লিকেশনটিকে নরক হিসাবে ধীরে ধীরে করেছে (যদিও চিত্রটি কেবল 100 কেবি !!!)। অঙ্কনযোগ্য-এক্সএক্সএক্সএক্স ফাইলগুলি তৈরি করার পরে (আমি অ্যান্ড্রয়েড ড্রয়যোগ্য আমদানিকারক ব্যবহার করেছি) আমার অ্যাপ্লিকেশনটি খুব দ্রুত। অনেক ধন্যবাদ!
ত্রুটি 1337

20

ইউআই থ্রেডে বিলম্বের আর একটি সাধারণ কারণ হ'ল SharedPreferences অ্যাক্সেস। আপনি যখন PreferenceManager.getSharedPreferencesপ্রথমবারের জন্য একটি এবং অন্যান্য অনুরূপ পদ্ধতিগুলি কল করেন, তখন সম্পর্কিত .xML ফাইলটি তত্ক্ষণাত একই থ্রেডে লোড করা এবং পার্স করা হবে

এই সমস্যাটি মোকাবেলার একটি ভাল উপায় হ'ল ব্যাকগ্রাউন্ড থ্রেড থেকে প্রথম অংশীদারি পছন্দ লোড ট্রিগার করছে, যত তাড়াতাড়ি সম্ভব শুরু হয়েছে (যেমন onCreateআপনার অ্যাপ্লিকেশন শ্রেণীর থেকে)। আপনি যখন এটি ব্যবহার করতে চান তারপরে এই পছন্দটি বস্তুটি ইতিমধ্যে নির্মিত হতে পারে।

দুর্ভাগ্যক্রমে, কখনও কখনও প্রারম্ভিক ফাইলগুলি পড়া শুরু করার প্রাথমিক পর্যায়ে (যেমন প্রাথমিক ক্রিয়াকলাপ বা এমনকি অ্যাপ্লিকেশন নিজেই) প্রয়োজন হয়। এই ধরনের ক্ষেত্রে ইউআই ব্যবহার করে স্টলিং এড়ানো এখনও সম্ভব MessageQueue.IdleHandler। মূল থ্রেডে আপনাকে সম্পাদন করতে হবে এমন আরও কিছু করুন, তারপরে আপনার ক্রিয়াকলাপ সম্পূর্ণরূপে অঙ্কিত হয়ে যাওয়ার পরে কোড কার্যকর করতে আইডলহ্যান্ডলার ইনস্টল করুন। সেই রান্নেবলের ক্ষেত্রে আপনার অনেক বেশি অঙ্কন কার্য না করে এবং কোরিওগ্রাফারকে অসন্তুষ্ট না করেই ভাগ্যবান্ধব পছন্দগুলি অ্যাক্সেস করা উচিত।


1
এই ক্ষেত্রে, আপনার কমিট () পরিবর্তে প্রয়োগ () পদ্ধতিটি পছন্দ করা উচিত। প্রয়োগ () পদ্ধতি ইউআই অবরুদ্ধ করতে পারে না। আপনি এখান থেকে বিকাশকারী.অ্যান্ড্রয়েড
ট্রেনিং / ডেটা-স্টোরেজ / শেয়ার্ড-পছন্দসমূহ

16

আপনার অ্যাপের কার্যকারিতা উন্নত করতে নিম্নলিখিত কৌশলগুলি ব্যবহার করার চেষ্টা করুন:

  • সম্ভব হলে মাল্টি-থ্রেডিং প্রোগ্রামিং ব্যবহার করুন। পারফরম্যান্স সুবিধাগুলি বিশাল, এমনকি আপনার স্মার্ট ফোনে একটি কোর থাকলেও (প্রসেসরের দু'একটি বা তার বেশি হলে থ্রেড বিভিন্ন কোরে চলতে পারে)। আপনার অ্যাপ্লিকেশনটির যুক্তিকে ইউআই থেকে আলাদা করতে এটি দরকারী। জাভা থ্রেড, অ্যাসিঙ্কটাস্ক বা ইনসেন্টসেসরিজ ব্যবহার করুন। এটি পরীক্ষা করে দেখুন
  • অ্যান্ড্রয়েড বিকাশ ওয়েবসাইটটির বিবিধ পারফরম্যান্স টিপস পড়ুন এবং অনুসরণ করুন। এখানে চেক করুন

3
আপনার প্রথম লিঙ্কটিতে এটির অ্যাক্সেস করার জন্য আপনার "... একটি বৈধ অ্যাকাউন্ট আছে ..." দরকার।
ছোটাছুটি করুন

9

আমারও একই সমস্যা ছিল। অ্যান্ড্রয়েড এমুলেটর অ্যান্ড্রয়েড <6.0 এ পুরোপুরি কাজ করেছে। আমি যখন এমুলেটর নেক্সাস 5 (অ্যান্ড্রয়েড .0.০) ব্যবহার করি তখন অ্যাপটি I/Choreographer: Skipped framesলগগুলিতে খুব ধীর গতিতে কাজ করে।

সুতরাং, আমি এটিকে hardwareAcceleratedপছন্দ করতে ম্যানিফেস্ট ফাইল বিকল্পটিতে পরিবর্তন করে এই সমস্যার সমাধান করেছি true:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application android:hardwareAccelerated="true">
        ...
    </application>
</manifest>

8

আমি কোনও বিশেষজ্ঞ নই, তবে আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশন থেকে কোনও ওয়েব সার্ভারে ডেটা প্রেরণ করতে চাইলে আমি এই ডিবাগ বার্তাটি পেয়েছি। যদিও আমি অ্যাসিঙ্কটাস্ক ক্লাস ব্যবহার করেছি এবং ব্যাকগ্রাউন্ডে ডেটা স্থানান্তর করেছি, সার্ভার থেকে ফলাফলের তথ্য ফিরে পাওয়ার জন্য আমি অ্যাসিঙ্কটাস্ক ক্লাসের () পদ্ধতিটি ব্যবহার করি যা ইউআই সিঙ্ক্রোনাস করে যার অর্থ আপনার ইউআই খুব দীর্ঘ সময়ের জন্য অপেক্ষা করবে। সুতরাং আমার পরামর্শটি হ'ল আপনার অ্যাপ্লিকেশনটি প্রতিটি নেটওয়ার্ক ভিত্তিক কাজ আলাদা থ্রেডে করা make


6

আপনার চিত্রগুলি অনুকূলিত করুন ... 100KB এর চেয়ে বড় চিত্রগুলি ব্যবহার করবেন না ... চিত্র লোডিংয়ে অনেক বেশি সিপিইউ লাগে এবং আপনার অ্যাপ্লিকেশনটি স্তব্ধ হয়ে যায়।


4
জাভা কোড দ্বারা চিত্রের আকার হ্রাস করুন বা ছবি ক্রপ করতে ফটোশপ ব্যবহার করুন .. এছাড়াও কমপ্রেসর.ও ব্যবহার করে চিত্রগুলি
সংক্ষেপ করুন

5

আমারও একই সমস্যা ছিল। আমার ক্ষেত্রে আমার 2 টি নেটিভ রিলেটিভ লেআউট ছিল। রিলেটিভলআউটকে সর্বদা দুটি পরিমাপ পাস করতে হয়। আপনি যদি রিলেটিভলআউটগুলিতে বাসা বাঁধেন তবে আপনি একটি ঘনিষ্ঠ পরিমাপের অ্যালগরিদম পান।


4

আপনি যখন মূল থ্রেডে বিশাল প্রক্রিয়া চালাচ্ছেন এটি সাধারণত হয়। 200 এর চেয়ে কম ফ্রেমগুলি এড়ানো ঠিক আছে but তবে আপনার যদি 200 এর বেশি স্কিপড ফ্রেম থাকে তবে এটি আপনার ইউআই থ্রেডটি আস্তে আস্তে আস্তে আস্তে পরিণত করতে পারে। আপনি যা করতে পারেন তা হ'ল কর্মী থ্রেড নামক নতুন থ্রেডে এই প্রক্রিয়াগুলি করা এবং তার পরে, আপনি যখন ইউআই থ্রেড দিয়ে অ্যাক্সেস করতে এবং স্টাট করতে চান (উদাহরণস্বরূপ : ভিউ, সন্ধানদর্শন ইত্যাদি দিয়ে কিছু করুন ...) আপনি হ্যান্ডলার বা রানঅনউইথ্রেড ব্যবহার করতে পারেন প্রসেসিংয়ের ফলাফলগুলি প্রদর্শনের জন্য (আমি এটি আরও পছন্দ করি)। এটি একেবারে সমস্যার সমাধান করে। শ্রমিকের থ্রেডগুলি ব্যবহার করা খুব দরকারী বা এমনকি যদি এই ক্ষেত্রে আসে তখন অবশ্যই ব্যবহার করা উচিত।


1

আমারও একই সমস্যা ছিল। আমি যখন অন্য কম্পিউটারে কোডটি চালিয়েছি, এটি দুর্দান্ত কাজ করেছে। আমার ক্ষেত্রে, এটি প্রদর্শিত হয়েছে "অ্যাপ্লিকেশনটি এর মূল থ্রেডটিতে খুব বেশি কাজ করছে"।

আমি অ্যান্ড্রয়েড স্টুডিও [ফাইল -> অবৈধ ক্যাশে / পুনঃসূচনা -> "অবৈধ এবং পুনঃসূচনা" ক্লিক করুন] পুনরায় চালু করে আমার সমস্যার সমাধান করেছি।


আমি জানি না কেন আপনার সমাধান কাজ করেছে। যাইহোক ধন্যবাদ।
ভুবনেশ বিএস

1

আমার ক্ষেত্রে, এটি ছিল কারণ আমি ভুলক্রমে কোনও পদ্ধতিতে ব্রেকপয়েন্ট স্থাপন করেছি set আমি এটি সাফ করার পরে, বার্তাটি চলে গেল এবং পারফরম্যান্সে অনেক উন্নতি হয়েছিল।


0

আমার অ্যাপ্লিকেশনটিতেও একই সমস্যা ছিল। এটি এতে কার্ড এবং পাঠ্যের তালিকা প্রদর্শন করা ব্যতীত অন্য কিছু করছিল না। পটভূমিতে কিছুই চলছে না। কিন্তু তারপরে কিছু তদন্তের পরে দেখা গেল যে কার্ড ব্যাকগ্রাউন্ডের জন্য সেট করা চিত্রটি এটির কারণ হতে পারে যদিও এটি ছোট ছিল (350 কিলোবাইট)। তারপরে আমি চিত্রটিকে http://romannurik.github.io/AndroidAssetStudio/index.html ব্যবহার করে 9 প্যাচ চিত্রগুলিতে রূপান্তর করেছি ।
এটি আমার পক্ষে কাজ করেছে।


0

এই বিষয়ে অনেক গবেষণা ও গবেষণা করার পরে আমি সমাধান পেয়েছি,

আমার ক্ষেত্রে আমি পরিষেবাটি ব্যবহার করছি যা প্রতি 2 সেকেন্ডে চালিত হবে এবং রাননউইথ্রেড সহ আমি ভাবছিলাম যে সমস্যাটি ছিল তবে তা মোটেই নেই। পরবর্তী সমস্যাটি যা আমি পেয়েছি তা হ'ল আমি মে অ্যাপে বৃহত চিত্র ব্যবহার করছি এবং সমস্যাটি রয়েছে।

আমি চিত্রগুলি সরিয়ে নিয়েছি এবং নতুন ছবি সেট করেছি।

উপসংহার: - আপনার কোডটি দেখুন কোনও কাঁচা ফাইল যা আপনি ব্যবহার করছেন সেটি বড় আকারের।


0

প্রথমে সতর্কতা পড়ুন। এটি মূল থ্রেডে আরও বেশি লোড বলে। সুতরাং আপনাকে যা করতে হবে তা হ'ল একটি থ্রেডে আরও কাজ করে ফাংশন চালানো।


-1

একটি অ্যাপ্লিকেশন বিকাশ করার সময় আমি একই সমস্যা পেয়েছি যা গ্রিড লেআউটে প্রচুর অঙ্কনযোগ্য পিএনজি ফাইল ব্যবহার করে। আমি আমার কোডটি যথাসম্ভব অপ্টিমাইজ করার চেষ্টা করেছি .. তবে এটি আমার পক্ষে কার্যকর হয়নি .. তারপরে আমি সেই পিএনজিটির আকার হ্রাস করার চেষ্টা করেছি .. এবং এটির কাজটি ঠিকঠাক অনুমান করি .. সুতরাং আমার পরামর্শটি হ্রাস করতে হবে অঙ্কনযোগ্য উত্স আকার যদি কোন ..

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