انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل skipped frame و عدم تشخیص علت (doing too much work on its main thread) (اندروید)

مشکل skipped frame و عدم تشخیص علت (doing too much work on its main thread) (اندروید)

#1
Idea Ideaسلام دوستان لطفا راهنمایی بفرمایید:
من یه برنامه ساختم که بوسیله یک سری دکمه یه کارهایی مثلا( invisible, enabled,chang background)روی یک سری ویو انجام میشه
برنامه برای ورود به هر اکتیویتی یک مکث چند ثانیه ای میکنه و بعد وارد میشه و گاهی force close میده و در logcat ارور میده:
"Skipped x frames!  The application may be doing too much work on its main thread"
خیلی سرچ کردم گویا مشکل از طولانی شدن عملیات های ترید اصلیه ولی چطور بفهمم مشکل از کدوم قسمت کدهام هست که سنگینه؟؟؟!!!!
پاسخ

مشکل skipped frame و عدم تشخیص علت (doing too much work on its main thread) (اندروید)

#2
سلام.
یک راه حل برای تعیین زمان اجرای هر بخش از کدها این است که پیام هایی را برای نمایش در LogCat ، بعد از اجرای هر بخش مهم از کدها، طراحی می کنید، که در متن پیام ها، زمان بر اساس میلی ثانیه را هم می نویسید. بنابراین با مشاهده LogCat و بررسی زمان ها، متوجه می شوید که هر بخش تا چه حد زمان بر می باشد.
برای نمایش پیام در LogCat ، کلید زیر را بخوانید (برای Eclipse توضیح داده شده، اما در Android Studio نیز مشابه می باشد) :

کلید شماره 2719

دقت شود که باید کدهای زمان بر را با AsyncTask اجرا کنید تا در یک Thread جداگانه اجرا شوند. به عنوان مثال، در کلید زیر، یک مثال از AsyncTask وجود دارد :

کلید شماره 312

نکته :
وقتی کدی را در Thread ای غیر از Thread اصلی (Main Thread) اجرا می کنیم، آنگاه چون تنها Thread اصلی می تواند UI برنامه اندروید (رابط گرافیکی آن) را تغییر دهد، بنابراین اگر قرار است کدها تغییراتی را در UI برنامه اندروید ایجاد کنند، باید بر اساس کلید زیر عمل کنید :

کلید شماره 2858

Flower
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط sami

مشکل skipped frame و عدم تشخیص علت (doing too much work on its main thread) (اندروید)

#3
Thumbs Up 
با تشکر از پاسخگویی شما
مورد اول رو برای متدهای مختلف یک اکتیوتی انجام دادم به این صورت:
مثلا :
کد پی‌اچ‌پی:
public void onCreate(Bundle savedInstanceState) {
        
long start System.currentTimeMillis();
...
...
...
 
long elapsedTimeMillis System.currentTimeMillis()-start;
 
Log.d("mytag",String.valueOf(elapsedTimeMillis)); 

یک انیمیشن داشتم در on creat که 1500ms زمان میبرد و حذفش کردم زمان متد  oncreat به حدود 50ms کاهش یافت ولی skipp 250 frame از بین نرفت و همچنان مکث چند ثانیه ای برای باز شدن اکتیویتی!!!
سوال : آیا درست انجام دادم و اگر بله مشکل از چیه؟؟
پاسخ

مشکل skipped frame و عدم تشخیص علت (doing too much work on its main thread) (اندروید)

#4
Lightbulb 
با سلام
راه دیگه ای ( غیر از بدست آوردن زمان متدها) برای فهمیدن علت مکث های چند ثانیه ای در هنگام ورود به صفحه جدید(اکتیویتی جدید) و ارور skipped frame در logcat وجود داره؟؟؟
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان