WindowManager

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

Winscope-এর WindowManager ভিউয়ার ট্রেস ও ডাম্প, উভয়ের জন্যই এই তথ্য দেখায়।

ট্রেস সংগ্রহ করা সম্পর্কে আরও তথ্য পেতে WindowManager দেখুন।

windowmanager

ছবি ১. WindowManager ট্রেস বিশ্লেষণ।

স্ক্রিনের বাঁদিকে উইন্ডোর 3D ভিউ দেখানো হয়। rects ভিউ উইন্ডো বাউন্ড, z-অর্ডার ও অপাসিটি বিবেচনা করে।

ট্যাবের কেন্দ্রীয় সেগমেন্টে উইন্ডো হায়ারার্কি দেখানো হয়। উইন্ডো, অ্যাক্টিভিটি ও টাস্কের মধ্যে প্যারেন্ট-চাইল্ড সম্পর্ক ছাড়াও, এই ভিউতে নিম্নলিখিত তথ্যও থাকে:

  • V: দৃশ্যমান উইন্ডো শনাক্ত করে।

স্ক্রিনের ডানদিকে সব উপলভ্য প্রপার্টির প্রোটো ডাম্প দেখানো হয়। প্রোটো ডাম্প বিভাগের ফিচার সম্পর্কে আরও তথ্যের জন্য প্রপার্টি দেখুন।

@IntDef অনুবাদ

@IntDef ট্রান্সলেশন হল WindowManager প্রপার্টি প্যানেলের একটি গুরুত্বপূর্ণ প্রপার্টি। @IntDef থেকে বোঝা যায় যে পূর্ণসংখ্যা ধরনের অ্যানোটেট করা এলিমেন্ট একটি লজিক্যাল ধরনকে দেখায় এবং এর মান অবশ্যই স্পষ্টভাবে নাম দেওয়া ধ্রুবকগুলির মধ্যে একটি হতে হবে। মেমরি ও পারফর্ম্যান্সের উপর প্রভাব কমানোর জন্য Android কোডবেসের মধ্যে enum-এর পরিবর্তে @IntDef ব্যবহার করা হয়।

@IntDef ব্যবহারের একটি উদাহরণ নিচে দেওয়া হল:

/**
  * The modes to control how root task is moved to the front when calling {@link Task#reparent}.
 */
@Retention(RetentionPolicy.SOURCE)
@IntDef({
  REPARENT_MOVE_ROOT_TASK_TO_FRONT,
  REPARENT_KEEP_ROOT_TASK_AT_FRONT,
  REPARENT_LEAVE_ROOT_TASK_IN_PLACE
})
@interface ReparentMoveRootTaskMode {}

// Moves the root task to the front if it was not at the front
static final int REPARENT_MOVE_ROOT_TASK_TO_FRONT = 0;
// Only moves the root task to the front if it was focused or frontmost already
static final int REPARENT_KEEP_ROOT_TASK_AT_FRONT = 1;
// Do not move the root task as a part of reparenting
static final int REPARENT_LEAVE_ROOT_TASK_IN_PLACE = 2;

ফ্ল্যাগগুলি মানুষের পক্ষে পাঠযোগ্য ভ্যালু ব্যবহার করার পরিবর্তে পূর্ণসংখ্যা হিসেবে স্টোর করা হয়, যা ব্যাখ্যা করা কঠিন হতে পারে। Winscope @IntDef সংজ্ঞা ব্যবহার করে এইসব ফ্ল্যাগকে মানুষের-পঠনযোগ্য ভ্যালুতে ট্রান্সলেট করে। কম্পাইলেশনের সময়, Winscope @IntDef ভ্যালুর একটি অভিধান সংগ্রহ করে এবং এই তালিকাটি রানটাইমে @IntDef ইনস্ট্যান্সকে হিউম্যান-রিডেবল ফর্ম্যাটে ডিকোড করতে ব্যবহার করে। যেমন, 2-এর activityType-এর সাথে অ্যাক্টিভিটি ACTIVITY_TYPE_HOME-এর activityType-এ অনুবাদ করা হয়েছে। একইভাবে, flags=2173763840 সহ উইন্ডো Winscope-এ এইভাবে অনুবাদ করা হয়:

flags=FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS | FLAG_HARDWARE_ACCELERATED | FLAG_SPLIT_TOUCH | FLAG_SHOW_WALLPAPER | FLAG_LAYOUT_INSET_DECOR | FLAG_LAYOUT_IN_SCREEN

Winscope যদি কোনও @IntDef ইনস্ট্যান্স সঠিকভাবে অনুবাদ না করে, তাহলে @IntDef ম্যাপিং আপডেট করুন লিঙ্কে দেওয়া ধাপগুলি অনুসরণ করে Winscope-এর পরিচিত @IntDef ইনস্ট্যান্সের তালিকা আপডেট করুন।