dumpsys activity -h
Activity manager dump options:
[-a] [-c] [-p PACKAGE] [-h] [WHAT] ...
WHAT may be one of:
a[ctivities]: activity stack state
r[recents]: recent activities state
b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state
broadcast-stats [PACKAGE_NAME]: aggregated broadcast statistics
i[ntents] [PACKAGE_NAME]: pending intent state
p[rocesses] [PACKAGE_NAME]: process state
o[om]: out of memory management
perm[issions]: URI permission grant state
prov[iders] [COMP_SPEC ...]: content provider state
provider [COMP_SPEC]: provider client-side state
s[ervices] [COMP_SPEC ...]: service state
as[sociations]: tracked app associations
settings: currently applied config settings
service [COMP_SPEC]: service client-side state
package [PACKAGE_NAME]: all state related to given package
all: dump all activities
top: dump the top activity
WHAT may also be a COMP_SPEC to dump activities.
COMP_SPEC may be a component name (com.foo/.myApp),
a partial substring in a component name, a
hex object identifier.
-a: include all available server state.
-c: include client state.
-p: limit output to given package.
--checkin: output checkin format, resetting data.
--C: output checkin format, not resetting data.
--proto: output dump in protocol buffer format.
--autofill: dump just the autofill-related state of an activity
dumpsys window -h
Window manager dump options:
[-a] [-h] [cmd] ...
cmd may be one of:
l[astanr]: last ANR information
p[policy]: policy state
a[animator]: animator state
s[essions]: active sessions
surfaces: active surfaces (debugging enabled only)
d[isplays]: active display contents
t[okens]: token list
w[indows]: window list
cmd may also be a NAME to dump windows. NAME may
be a partial substring in a window name, a
Window hex object identifier, or
"all" for all windows, or
"visible" for the visible windows.
"visible-apps" for the visible app windows.
-a: include all available server state.
--proto: output dump in protocol buffer format.
dumpsys activity a
ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
// ActivityDisplay
Display #0 (activities from top to bottom):
// ActivityStack
Stack #3: type=standard mode=fullscreen -------------------------------------StackId
isSleeping=false
mBounds=Rect(0, 0 - 0, 0)-----------------------------Stack Bounds
Task id #5 ----------------------------------------------------------Task id
mBounds=Rect(0, 0 - 0, 0)---------------------------------------------------------------Task Bounds
mMinWidth=-1
mMinHeight=-1
mLastNonFullscreenBounds=null
* TaskRecord{73545e7 #5 A=com.android.settings.root U=0 StackId=3 sz=1}
userId=0 effectiveUid=1000 mCallingUid=u0a39 mUserSetupComplete=true mCallingPackage=com.android.launcher3
affinity=com.android.settings.root
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings}
origActivity=com.android.settings/.Settings
realActivity=com.android.settings/.Settings
autoRemoveRecents=false isPersistable=true numFullscreen=1 activityType=1
rootWasReset=true mNeverRelinquishIdentity=true mReuseTask=false mLockTaskAuth=LOCK_TASK_AUTH_PINNABLE
Activities=[ActivityRecord{d784835 u0 com.android.settings/.Settings t5}]
askedCompatMode=false inRecents=true isAvailable=true
mRootProcess=ProcessRecord{53fe8a0 15906:com.android.settings/1000}
stackId=3
hasBeenVisible=true mResizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION mSupportsPictureInPicture=false isResizeable=true lastActiveTime=253262918 (inactive for 1720s)
* Hist #0: ActivityRecord{d784835 u0 com.android.settings/.Settings t5}
packageName=com.android.settings processName=com.android.settings
launchedFromUid=10039 launchedFromPackage=com.android.launcher3 userId=0
app=ProcessRecord{53fe8a0 15906:com.android.settings/1000}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings bnds=[1091,125][1353,258] }
frontOfTask=true task=TaskRecord{73545e7 #5 A=com.android.settings.root U=0 StackId=3 sz=1}
taskAffinity=com.android.settings.root
realActivity=com.android.settings/.Settings
baseDir=/system/priv-app/Settings/Settings.apk
dataDir=/data/user_de/0/com.android.settings
-------------------------------------------------------------
stateNotNeeded=false componentSpecified=true mActivityType=standard
compat={230dpi always-compat} labelRes=0x7f120b7a icon=0x7f08011f theme=0x7f1301dd
mLastReportedConfigurations:
mGlobalConfig={1.0 ?mcc?mnc [zh_CN_#Hans,en_US] ldltr sw751dp w1335dp h678dp 230dpi lrg long land finger -keyb/v/h -nav/h winConfig={
mBounds=Rect(0, 0 - 1920, 1011)
mAppBounds=Rect(0, 0 - 1920, 1011)
mWindowingMode=fullscreen
mActivityType=undefined
} s.7}
mOverrideConfig={1.0 ?mcc?mnc [zh_CN_#Hans,en_US] ldltr sw751dp w1335dp h678dp 230dpi lrg long land finger -keyb/v/h -nav/h winConfig={
mBounds=Rect(0, 0 - 1920, 1011)
mAppBounds=Rect(0, 0 - 1920, 1011)
mWindowingMode=fullscreen
mActivityType=standard}
s.7}
CurrentConfiguration={1.0 ?mcc?mnc [zh_CN_#Hans,en_US] ldltr sw751dp w1335dp h678dp 230dpi lrg long land finger -keyb/v/h -nav/h winConfig={
mBounds=Rect(0, 0 - 1920, 1011)
mAppBounds=Rect(0, 0 - 1920, 1011)
mWindowingMode=fullscreen
mActivityType=standard}
s.7}
taskDescription: label="null" icon=null iconResource=0 iconFilename=/data/system_ce/0/recent_images/5_activity_icon_5688605638.png primaryColor=fff5f5f5
backgroundColor=fffafafa
statusBarColor=ffe0e0e0
navigationBarColor=ffffffff
launchFailed=false launchCount=1 lastLaunchTime=-28m40s816ms
haveState=false icicle=null
state=RESUMED stopped=false delayedResume=false finishing=false
keysPaused=false inHistory=true visible=true sleeping=false idle=true mStartingWindowState=STARTING_WINDOW_SHOWN
fullscreen=true noDisplay=false immersive=false launchMode=2
frozenBeforeDestroy=false forceNewConfig=false
mActivityType=standard
waitingVisible=false nowVisible=true lastVisibleTime=-28m40s308ms
resizeMode=RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION
mLastReportedMultiWindowMode=false mLastReportedPictureInPictureMode=false
Running activities (most recent first):
TaskRecord{73545e7 #5 A=com.android.settings.root U=0 StackId=3 sz=1}
Run #0: ActivityRecord{d784835 u0 com.android.settings/.Settings t5}
mResumedActivity: ActivityRecord{d784835 u0 com.android.settings/.Settings t5}
Stack #0: type=home mode=fullscreen --------------------------------------------------HomeStack
isSleeping=false
mBounds=Rect(0, 0 - 0, 0)
Task id #2
mBounds=Rect(0, 0 - 0, 0)
mMinWidth=-1
mMinHeight=-1
mLastNonFullscreenBounds=null
* TaskRecord{ec6153e #2 I=com.android.launcher3/.Launcher U=0 StackId=0 sz=1}
userId=0 effectiveUid=u0a39 mCallingUid=1000 mUserSetupComplete=true mCallingPackage=android
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.launcher3/.Launcher}
realActivity=com.android.launcher3/.Launcher
autoRemoveRecents=false isPersistable=true numFullscreen=1 activityType=2
rootWasReset=false mNeverRelinquishIdentity=true mReuseTask=false mLockTaskAuth=LOCK_TASK_AUTH_PINNABLE
Activities=[ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}]
askedCompatMode=false inRecents=true isAvailable=true
mRootProcess=ProcessRecord{e7b8086 2463:com.android.launcher3/u0a39}
stackId=0
hasBeenVisible=true mResizeMode=RESIZE_MODE_RESIZEABLE mSupportsPictureInPicture=false isResizeable=true lastActiveTime=253262790 (inactive for 1720s)
* Hist #0: ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}
packageName=com.android.launcher3 processName=com.android.launcher3
launchedFromUid=0 launchedFromPackage=null userId=0
app=ProcessRecord{e7b8086 2463:com.android.launcher3/u0a39}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.android.launcher3/.Launcher }
frontOfTask=true task=TaskRecord{ec6153e #2 I=com.android.launcher3/.Launcher U=0 StackId=0 sz=1}
taskAffinity=null
realActivity=com.android.launcher3/.Launcher
baseDir=/system/priv-app/Launcher3QuickStep/Launcher3QuickStep.apk
dataDir=/data/user/0/com.android.launcher3
stateNotNeeded=true componentSpecified=false mActivityType=home
compat={230dpi always-compat} labelRes=0x7f110035 icon=0x7f08001b theme=0x7f120002
mLastReportedConfigurations:
mGlobalConfig={1.0 ?mcc?mnc [zh_CN_#Hans,en_US] ldltr sw751dp w1335dp h678dp 230dpi lrg long land finger -keyb/v/h -nav/h winConfig={
mBounds=Rect(0, 0 - 1920, 1011) mAppBounds=Rect(0, 0 - 1920, 1011) mWindowingMode=fullscreen mActivityType=undefined} s.7}
mOverrideConfig={1.0 ?mcc?mnc [zh_CN_#Hans,en_US] ldltr sw751dp w1335dp h678dp 230dpi lrg long land finger -keyb/v/h -nav/h winConfig={
mBounds=Rect(0, 0 - 1920, 1011) mAppBounds=Rect(0, 0 - 1920, 1011) mWindowingMode=fullscreen mActivityType=home} s.7}
CurrentConfiguration={1.0 ?mcc?mnc [zh_CN_#Hans,en_US] ldltr sw751dp w1335dp h678dp 230dpi lrg long land finger -keyb/v/h -nav/h winConfig={
mBounds=Rect(0, 0 - 1920, 1011) mAppBounds=Rect(0, 0 - 1920, 1011) mWindowingMode=fullscreen mActivityType=home} s.7}
OverrideConfiguration={0.0 ?mcc?mnc ?localeList ?layoutDir ?swdp ?wdp ?hdp ?density ?lsize ?long ?ldr ?wideColorGamut ?orien ?uimode ?night ?touch ?keyb/?/? ?nav/? winConfig={
mBounds=Rect(0, 0 - 0, 0) mAppBounds=null mWindowingMode=undefined mActivityType=home}}
taskDescription: label="null" icon=null iconResource=0 iconFilename=null primaryColor=fff5f5f5
backgroundColor=fffafafa
statusBarColor=0
navigationBarColor=0
launchFailed=false launchCount=0 lastLaunchTime=-2d22h48m49s780ms
haveState=true icicle=Bundle[mParcelledData.dataSize=2416]
state=STOPPED stopped=true delayedResume=false finishing=false
keysPaused=false inHistory=true visible=false sleeping=false idle=true mStartingWindowState=STARTING_WINDOW_NOT_SHOWN
fullscreen=true noDisplay=false immersive=false launchMode=2
frozenBeforeDestroy=false forceNewConfig=false
mActivityType=home
waitingVisible=false nowVisible=false lastVisibleTime=-35m12s837ms
resizeMode=RESIZE_MODE_RESIZEABLE
mLastReportedMultiWindowMode=false mLastReportedPictureInPictureMode=false
Running activities (most recent first):
TaskRecord{ec6153e #2 I=com.android.launcher3/.Launcher U=0 StackId=0 sz=1}
Run #0: ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}
mLastPausedActivity: ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}
// 副屏显示
Display #1 (activities from top to bottom):
ResumedActivity: ActivityRecord{d784835 u0 com.android.settings/.Settings t5}
mFocusedStack=ActivityStack{4a55594 stackId=3 type=standard mode=fullscreen visible=true translucent=false, 1 tasks} mLastFocusedStack=ActivityStack{4a55594 stackId=3 type=standard mode=fullscreen visible=true translucent=false, 1 tasks}
mCurTaskIdForUser={0=5}
mUserStackInFront={}
displayId=1 stacks=0
displayId=0 stacks=2
mHomeStack=ActivityStack{ed516bb stackId=0 type=home mode=fullscreen visible=false translucent=true, 1 tasks}
isHomeRecentsComponent=true KeyguardController:
mKeyguardShowing=false
mAodShowing=false
mKeyguardGoingAway=false
mOccluded=false
mDismissingKeyguardActivity=null
mDismissalRequested=false
mVisibilityTransactionDepth=0
LockTaskController
mLockTaskModeState=NONE
mLockTaskModeTasks=
mLockTaskPackages (userId:packages)=
u0:[]
代码
ActivityManagerService
public class ActivityManagerService extends IActivityManager . Stub
implements Watchdog . Monitor , BatteryStatsImpl . BatteryCallback {
@Override
protected void dump ( FileDescriptor fd , PrintWriter pw , String [] args ) {
PriorityDump . dump ( mPriorityDumper , fd , pw , args );
}
/**
* Wrapper function to print out debug data filtered by specified arguments.
*/
private void doDump ( FileDescriptor fd , PrintWriter pw , String [] args , boolean useProto ) {
if ( "activities" . equals ( cmd ) || "a" . equals ( cmd )) {
synchronized ( this ) {
dumpActivitiesLocked ( fd , pw , args , opti , true , dumpClient , dumpPackage );
}
}
}
void dumpActivitiesLocked ( FileDescriptor fd , PrintWriter pw , String [] args ,
int opti , boolean dumpAll , boolean dumpClient , String dumpPackage ) {
dumpActivitiesLocked ( fd , pw , args , opti , dumpAll , dumpClient , dumpPackage ,
"ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)" );
}
void dumpActivitiesLocked ( FileDescriptor fd , PrintWriter pw , String [] args ,
int opti , boolean dumpAll , boolean dumpClient , String dumpPackage , String header ) {
pw . println ( header );
boolean printedAnything = mStackSupervisor . dumpActivitiesLocked ( fd , pw , dumpAll , dumpClient ,
dumpPackage );
boolean needSep = printedAnything ;
boolean printed = ActivityStackSupervisor . printThisActivity ( pw ,
mStackSupervisor . getResumedActivityLocked (),
dumpPackage , needSep , " ResumedActivity: " );
if ( printed ) {
printedAnything = true ;
needSep = false ;
}
if ( dumpPackage == null ) {
if ( needSep ) {
pw . println ();
}
printedAnything = true ;
mStackSupervisor . dump ( pw , " " );
}
if (! printedAnything ) {
pw . println ( " (nothing)" );
}
}
}
ActivityStackSupervisor
public class ActivityStackSupervisor extends ConfigurationContainer implements DisplayListener ,
RecentTasks . Callbacks {
boolean dumpActivitiesLocked ( FileDescriptor fd , PrintWriter pw , boolean dumpAll ,
boolean dumpClient , String dumpPackage ) {
boolean printed = false ;
boolean needSep = false ;
//------------------------------------mActivityDisplays------------------------------
for ( int displayNdx = 0 ; displayNdx < mActivityDisplays . size (); ++ displayNdx ) {
ActivityDisplay activityDisplay = mActivityDisplays . valueAt ( displayNdx );
pw . print ( "Display #" ); pw . print ( activityDisplay . mDisplayId );
pw . println ( " (activities from top to bottom):" );
final ActivityDisplay display = mActivityDisplays . valueAt ( displayNdx );
// -------------------------------------ActivityStack----------------------------------
for ( int stackNdx = display . getChildCount () - 1 ; stackNdx >= 0 ; -- stackNdx ) {
final ActivityStack stack = display . getChildAt ( stackNdx );
pw . println ();
pw . println ( " Stack #" + stack . mStackId
+ ": type=" + activityTypeToString ( stack . getActivityType ())
+ " mode=" + windowingModeToString ( stack . getWindowingMode ()));
pw . println ( " isSleeping=" + stack . shouldSleepActivities ());
pw . println ( " mBounds=" + stack . getOverrideBounds ());
printed |= stack . dumpActivitiesLocked ( fd , pw , dumpAll , dumpClient , dumpPackage ,
needSep );
//-------------------------------mLRUActivities--------------------------------------
printed |= dumpHistoryList ( fd , pw , stack . mLRUActivities , " " , "Run" , false ,
! dumpAll , false , dumpPackage , true ,
" Running activities (most recent first):" , null );
needSep = printed ;
//-------------------------------mPausingActivity------------------------------------
boolean pr = printThisActivity ( pw , stack . mPausingActivity , dumpPackage , needSep ,
" mPausingActivity: " );
if ( pr ) {
printed = true ;
needSep = false ;
}
//-------------------------------getResumedActivity-----------------------------------
pr = printThisActivity ( pw , stack . getResumedActivity (), dumpPackage , needSep ,
" mResumedActivity: " );
if ( pr ) {
printed = true ;
needSep = false ;
}
if ( dumpAll ) {
pr = printThisActivity ( pw , stack . mLastPausedActivity , dumpPackage , needSep ,
" mLastPausedActivity: " );
if ( pr ) {
printed = true ;
needSep = true ;
}
printed |= printThisActivity ( pw , stack . mLastNoHistoryActivity , dumpPackage ,
needSep , " mLastNoHistoryActivity: " );
}
needSep = printed ;
}
}
printed |= dumpHistoryList ( fd , pw , mFinishingActivities , " " , "Fin" , false , ! dumpAll ,
false , dumpPackage , true , " Activities waiting to finish:" , null );
printed |= dumpHistoryList ( fd , pw , mStoppingActivities , " " , "Stop" , false , ! dumpAll ,
false , dumpPackage , true , " Activities waiting to stop:" , null );
printed |= dumpHistoryList ( fd , pw , mActivitiesWaitingForVisibleActivity , " " , "Wait" ,
false , ! dumpAll , false , dumpPackage , true ,
" Activities waiting for another to become visible:" , null );
printed |= dumpHistoryList ( fd , pw , mGoingToSleepActivities , " " , "Sleep" , false , ! dumpAll ,
false , dumpPackage , true , " Activities waiting to sleep:" , null );
return printed ;
}
}
ActivityStack
class ActivityStack < T extends StackWindowController > extends ConfigurationContainer
implements StackWindowListener {
boolean dumpActivitiesLocked ( FileDescriptor fd , PrintWriter pw , boolean dumpAll ,
boolean dumpClient , String dumpPackage , boolean needSep ) {
if ( mTaskHistory . isEmpty ()) {
return false ;
}
final String prefix = " " ;
//---------------------------------mTaskHistory-------------------------------
for ( int taskNdx = mTaskHistory . size () - 1 ; taskNdx >= 0 ; -- taskNdx ) {
final TaskRecord task = mTaskHistory . get ( taskNdx );
if ( needSep ) {
pw . println ( "" );
}
pw . println ( prefix + "Task id #" + task . taskId );
pw . println ( prefix + "mBounds=" + task . getOverrideBounds ());
pw . println ( prefix + "mMinWidth=" + task . mMinWidth );
pw . println ( prefix + "mMinHeight=" + task . mMinHeight );
pw . println ( prefix + "mLastNonFullscreenBounds=" + task . mLastNonFullscreenBounds );
pw . println ( prefix + "* " + task );
//----------------------------TaskRecord-----------------------------------
task . dump ( pw , prefix + " " );
//-----------------------------ActivityRecord-----------------------------------
ActivityStackSupervisor . dumpHistoryList ( fd , pw , mTaskHistory . get ( taskNdx ). mActivities ,
prefix , "Hist" , true , ! dumpAll , dumpClient , dumpPackage , false , null , task );
}
return true ;
}
}
TaskRecord
class TaskRecord extends ConfigurationContainer implements TaskWindowContainerListener {
void dump ( PrintWriter pw , String prefix ) {
pw . print ( prefix ); pw . print ( "userId=" ); pw . print ( userId );
pw . print ( " effectiveUid=" ); UserHandle . formatUid ( pw , effectiveUid );
pw . print ( " mCallingUid=" ); UserHandle . formatUid ( pw , mCallingUid );
pw . print ( " mUserSetupComplete=" ); pw . print ( mUserSetupComplete );
pw . print ( " mCallingPackage=" ); pw . println ( mCallingPackage );
if ( affinity != null || rootAffinity != null ) {
pw . print ( prefix ); pw . print ( "affinity=" ); pw . print ( affinity );
if ( affinity == null || ! affinity . equals ( rootAffinity )) {
pw . print ( " root=" ); pw . println ( rootAffinity );
} else {
pw . println ();
}
}
if ( voiceSession != null || voiceInteractor != null ) {
pw . print ( prefix ); pw . print ( "VOICE: session=0x" );
pw . print ( Integer . toHexString ( System . identityHashCode ( voiceSession )));
pw . print ( " interactor=0x" );
pw . println ( Integer . toHexString ( System . identityHashCode ( voiceInteractor )));
}
if ( intent != null ) {
StringBuilder sb = new StringBuilder ( 128 );
sb . append ( prefix ); sb . append ( "intent={" );
intent . toShortString ( sb , false , true , false , true );
sb . append ( '}' );
pw . println ( sb . toString ());
}
if ( affinityIntent != null ) {
StringBuilder sb = new StringBuilder ( 128 );
sb . append ( prefix ); sb . append ( "affinityIntent={" );
affinityIntent . toShortString ( sb , false , true , false , true );
sb . append ( '}' );
pw . println ( sb . toString ());
}
if ( origActivity != null ) {
pw . print ( prefix ); pw . print ( "origActivity=" );
pw . println ( origActivity . flattenToShortString ());
}
if ( realActivity != null ) {
pw . print ( prefix ); pw . print ( "realActivity=" );
pw . println ( realActivity . flattenToShortString ());
}
if ( autoRemoveRecents || isPersistable || ! isActivityTypeStandard () || numFullscreen != 0 ) {
pw . print ( prefix ); pw . print ( "autoRemoveRecents=" ); pw . print ( autoRemoveRecents );
pw . print ( " isPersistable=" ); pw . print ( isPersistable );
pw . print ( " numFullscreen=" ); pw . print ( numFullscreen );
pw . print ( " activityType=" ); pw . println ( getActivityType ());
}
if ( rootWasReset || mNeverRelinquishIdentity || mReuseTask
|| mLockTaskAuth != LOCK_TASK_AUTH_PINNABLE ) {
pw . print ( prefix ); pw . print ( "rootWasReset=" ); pw . print ( rootWasReset );
pw . print ( " mNeverRelinquishIdentity=" ); pw . print ( mNeverRelinquishIdentity );
pw . print ( " mReuseTask=" ); pw . print ( mReuseTask );
pw . print ( " mLockTaskAuth=" ); pw . println ( lockTaskAuthToString ());
}
if ( mAffiliatedTaskId != taskId || mPrevAffiliateTaskId != INVALID_TASK_ID
|| mPrevAffiliate != null || mNextAffiliateTaskId != INVALID_TASK_ID
|| mNextAffiliate != null ) {
pw . print ( prefix ); pw . print ( "affiliation=" ); pw . print ( mAffiliatedTaskId );
pw . print ( " prevAffiliation=" ); pw . print ( mPrevAffiliateTaskId );
pw . print ( " (" );
if ( mPrevAffiliate == null ) {
pw . print ( "null" );
} else {
pw . print ( Integer . toHexString ( System . identityHashCode ( mPrevAffiliate )));
}
pw . print ( ") nextAffiliation=" ); pw . print ( mNextAffiliateTaskId );
pw . print ( " (" );
if ( mNextAffiliate == null ) {
pw . print ( "null" );
} else {
pw . print ( Integer . toHexString ( System . identityHashCode ( mNextAffiliate )));
}
pw . println ( ")" );
}
pw . print ( prefix ); pw . print ( "Activities=" ); pw . println ( mActivities );
if (! askedCompatMode || ! inRecents || ! isAvailable ) {
pw . print ( prefix ); pw . print ( "askedCompatMode=" ); pw . print ( askedCompatMode );
pw . print ( " inRecents=" ); pw . print ( inRecents );
pw . print ( " isAvailable=" ); pw . println ( isAvailable );
}
if ( lastDescription != null ) {
pw . print ( prefix ); pw . print ( "lastDescription=" ); pw . println ( lastDescription );
}
if ( mRootProcess != null ) {
pw . print ( prefix ); pw . print ( "mRootProcess=" ); pw . println ( mRootProcess );
}
pw . print ( prefix ); pw . print ( "stackId=" ); pw . println ( getStackId ());
pw . print ( prefix + "hasBeenVisible=" + hasBeenVisible );
pw . print ( " mResizeMode=" + ActivityInfo . resizeModeToString ( mResizeMode ));
pw . print ( " mSupportsPictureInPicture=" + mSupportsPictureInPicture );
pw . print ( " isResizeable=" + isResizeable ());
pw . print ( " lastActiveTime=" + lastActiveTime );
pw . println ( " (inactive for " + ( getInactiveDuration () / 1000 ) + "s)" );
}
}
ActivityRecord
final class ActivityRecord extends ConfigurationContainer implements AppWindowContainerListener {
void dump ( PrintWriter pw , String prefix ) {
final long now = SystemClock . uptimeMillis ();
pw . print ( prefix ); pw . print ( "packageName=" ); pw . print ( packageName );
pw . print ( " processName=" ); pw . println ( processName );
pw . print ( prefix ); pw . print ( "launchedFromUid=" ); pw . print ( launchedFromUid );
pw . print ( " launchedFromPackage=" ); pw . print ( launchedFromPackage );
pw . print ( " userId=" ); pw . println ( userId );
pw . print ( prefix ); pw . print ( "app=" ); pw . println ( app );
pw . print ( prefix ); pw . println ( intent . toInsecureStringWithClip ());
pw . print ( prefix ); pw . print ( "frontOfTask=" ); pw . print ( frontOfTask );
pw . print ( " task=" ); pw . println ( task );
pw . print ( prefix ); pw . print ( "taskAffinity=" ); pw . println ( taskAffinity );
pw . print ( prefix ); pw . print ( "realActivity=" );
pw . println ( realActivity . flattenToShortString ());
if ( appInfo != null ) {
pw . print ( prefix ); pw . print ( "baseDir=" ); pw . println ( appInfo . sourceDir );
if (! Objects . equals ( appInfo . sourceDir , appInfo . publicSourceDir )) {
pw . print ( prefix ); pw . print ( "resDir=" ); pw . println ( appInfo . publicSourceDir );
}
pw . print ( prefix ); pw . print ( "dataDir=" ); pw . println ( appInfo . dataDir );
if ( appInfo . splitSourceDirs != null ) {
pw . print ( prefix ); pw . print ( "splitDir=" );
pw . println ( Arrays . toString ( appInfo . splitSourceDirs ));
}
}
pw . print ( prefix ); pw . print ( "stateNotNeeded=" ); pw . print ( stateNotNeeded );
pw . print ( " componentSpecified=" ); pw . print ( componentSpecified );
pw . print ( " mActivityType=" ); pw . println (
activityTypeToString ( getActivityType ()));
if ( rootVoiceInteraction ) {
pw . print ( prefix ); pw . print ( "rootVoiceInteraction=" ); pw . println ( rootVoiceInteraction );
}
pw . print ( prefix ); pw . print ( "compat=" ); pw . print ( compat );
pw . print ( " labelRes=0x" ); pw . print ( Integer . toHexString ( labelRes ));
pw . print ( " icon=0x" ); pw . print ( Integer . toHexString ( icon ));
pw . print ( " theme=0x" ); pw . println ( Integer . toHexString ( theme ));
//---------------------------------------mLastReportedConfigurations-------------------------
pw . println ( prefix + "mLastReportedConfigurations:" );
mLastReportedConfiguration . dump ( pw , prefix + " " );
//---------------------------------------CurrentConfiguration--------------------------------
pw . print ( prefix ); pw . print ( "CurrentConfiguration=" ); pw . println ( getConfiguration ());
//---------------------------------------OverrideConfiguration--------------------------------
if (! getOverrideConfiguration (). equals ( EMPTY )) {
pw . println ( prefix + "OverrideConfiguration=" + getOverrideConfiguration ());
}
if (! matchParentBounds ()) {
pw . println ( prefix + "bounds=" + getBounds ());
}
if ( resultTo != null || resultWho != null ) {
pw . print ( prefix ); pw . print ( "resultTo=" ); pw . print ( resultTo );
pw . print ( " resultWho=" ); pw . print ( resultWho );
pw . print ( " resultCode=" ); pw . println ( requestCode );
}
if ( taskDescription != null ) {
final String iconFilename = taskDescription . getIconFilename ();
if ( iconFilename != null || taskDescription . getLabel () != null ||
taskDescription . getPrimaryColor () != 0 ) {
pw . print ( prefix ); pw . print ( "taskDescription:" );
pw . print ( " label=\"" ); pw . print ( taskDescription . getLabel ());
pw . print ( "\"" );
pw . print ( " icon=" ); pw . print ( taskDescription . getInMemoryIcon () != null
? taskDescription . getInMemoryIcon (). getByteCount () + " bytes"
: "null" );
pw . print ( " iconResource=" ); pw . print ( taskDescription . getIconResource ());
pw . print ( " iconFilename=" ); pw . print ( taskDescription . getIconFilename ());
pw . print ( " primaryColor=" );
pw . println ( Integer . toHexString ( taskDescription . getPrimaryColor ()));
pw . print ( prefix + " backgroundColor=" );
pw . println ( Integer . toHexString ( taskDescription . getBackgroundColor ()));
pw . print ( prefix + " statusBarColor=" );
pw . println ( Integer . toHexString ( taskDescription . getStatusBarColor ()));
pw . print ( prefix + " navigationBarColor=" );
pw . println ( Integer . toHexString ( taskDescription . getNavigationBarColor ()));
}
}
if ( results != null ) {
pw . print ( prefix ); pw . print ( "results=" ); pw . println ( results );
}
if ( pendingResults != null && pendingResults . size () > 0 ) {
pw . print ( prefix ); pw . println ( "Pending Results:" );
for ( WeakReference < PendingIntentRecord > wpir : pendingResults ) {
PendingIntentRecord pir = wpir != null ? wpir . get () : null ;
pw . print ( prefix ); pw . print ( " - " );
if ( pir == null ) {
pw . println ( "null" );
} else {
pw . println ( pir );
pir . dump ( pw , prefix + " " );
}
}
}
if ( newIntents != null && newIntents . size () > 0 ) {
pw . print ( prefix ); pw . println ( "Pending New Intents:" );
for ( int i = 0 ; i < newIntents . size (); i ++) {
Intent intent = newIntents . get ( i );
pw . print ( prefix ); pw . print ( " - " );
if ( intent == null ) {
pw . println ( "null" );
} else {
pw . println ( intent . toShortString ( false , true , false , true ));
}
}
}
if ( pendingOptions != null ) {
pw . print ( prefix ); pw . print ( "pendingOptions=" ); pw . println ( pendingOptions );
}
if ( appTimeTracker != null ) {
appTimeTracker . dumpWithHeader ( pw , prefix , false );
}
if ( uriPermissions != null ) {
uriPermissions . dump ( pw , prefix );
}
pw . print ( prefix ); pw . print ( "launchFailed=" ); pw . print ( launchFailed );
pw . print ( " launchCount=" ); pw . print ( launchCount );
pw . print ( " lastLaunchTime=" );
if ( lastLaunchTime == 0 ) pw . print ( "0" );
else TimeUtils . formatDuration ( lastLaunchTime , now , pw );
pw . println ();
pw . print ( prefix ); pw . print ( "haveState=" ); pw . print ( haveState );
pw . print ( " icicle=" ); pw . println ( icicle );
pw . print ( prefix ); pw . print ( "state=" ); pw . print ( mState );
pw . print ( " stopped=" ); pw . print ( stopped );
pw . print ( " delayedResume=" ); pw . print ( delayedResume );
pw . print ( " finishing=" ); pw . println ( finishing );
pw . print ( prefix ); pw . print ( "keysPaused=" ); pw . print ( keysPaused );
pw . print ( " inHistory=" ); pw . print ( inHistory );
pw . print ( " visible=" ); pw . print ( visible );
pw . print ( " sleeping=" ); pw . print ( sleeping );
pw . print ( " idle=" ); pw . print ( idle );
pw . print ( " mStartingWindowState=" );
pw . println ( startingWindowStateToString ( mStartingWindowState ));
pw . print ( prefix ); pw . print ( "fullscreen=" ); pw . print ( fullscreen );
pw . print ( " noDisplay=" ); pw . print ( noDisplay );
pw . print ( " immersive=" ); pw . print ( immersive );
pw . print ( " launchMode=" ); pw . println ( launchMode );
pw . print ( prefix ); pw . print ( "frozenBeforeDestroy=" ); pw . print ( frozenBeforeDestroy );
pw . print ( " forceNewConfig=" ); pw . println ( forceNewConfig );
pw . print ( prefix ); pw . print ( "mActivityType=" );
pw . println ( activityTypeToString ( getActivityType ()));
if ( requestedVrComponent != null ) {
pw . print ( prefix );
pw . print ( "requestedVrComponent=" );
pw . println ( requestedVrComponent );
}
final boolean waitingVisible =
mStackSupervisor . mActivitiesWaitingForVisibleActivity . contains ( this );
if ( lastVisibleTime != 0 || waitingVisible || nowVisible ) {
pw . print ( prefix ); pw . print ( "waitingVisible=" ); pw . print ( waitingVisible );
pw . print ( " nowVisible=" ); pw . print ( nowVisible );
pw . print ( " lastVisibleTime=" );
if ( lastVisibleTime == 0 ) pw . print ( "0" );
else TimeUtils . formatDuration ( lastVisibleTime , now , pw );
pw . println ();
}
if ( mDeferHidingClient ) {
pw . println ( prefix + "mDeferHidingClient=" + mDeferHidingClient );
}
if ( deferRelaunchUntilPaused || configChangeFlags != 0 ) {
pw . print ( prefix ); pw . print ( "deferRelaunchUntilPaused=" ); pw . print ( deferRelaunchUntilPaused );
pw . print ( " configChangeFlags=" );
pw . println ( Integer . toHexString ( configChangeFlags ));
}
if ( connections != null ) {
pw . print ( prefix ); pw . print ( "connections=" ); pw . println ( connections );
}
if ( info != null ) {
pw . println ( prefix + "resizeMode=" + ActivityInfo . resizeModeToString ( info . resizeMode ));
pw . println ( prefix + "mLastReportedMultiWindowMode=" + mLastReportedMultiWindowMode
+ " mLastReportedPictureInPictureMode=" + mLastReportedPictureInPictureMode );
if ( info . supportsPictureInPicture ()) {
pw . println ( prefix + "supportsPictureInPicture=" + info . supportsPictureInPicture ());
pw . println ( prefix + "supportsEnterPipOnTaskSwitch: "
+ supportsEnterPipOnTaskSwitch );
}
if ( info . maxAspectRatio != 0 ) {
pw . println ( prefix + "maxAspectRatio=" + info . maxAspectRatio );
}
}
}
}
dumpsys window
----------------------LAST ANR----------------------------------
WINDOW MANAGER LAST ANR (dumpsys window lastanr)
<no ANR has occurred since boot>
----------------------POLICY STATE----------------------------------
WINDOW MANAGER POLICY STATE (dumpsys window policy)
mSafeMode=false mSystemReady=true mSystemBooted=true
mLidState=LID_ABSENT mLidOpenRotation=-1
mCameraLensCoverState=CAMERA_LENS_COVER_ABSENT mHdmiPlugged=false
mLastSystemUiFlags=0xa018 mResettingSystemUiFlags=0x0 mForceClearedSystemUiFlags=0x0
mWakeGestureEnabledSetting=true
mSupportAutoRotation=true mOrientationSensorEnabled=false
mUiMode=UI_MODE_TYPE_NORMAL mDockMode=EXTRA_DOCK_STATE_UNDOCKED
mEnableCarDockHomeCapture=true mCarDockRotation=-1 mDeskDockRotation=-1
mUserRotationMode=USER_ROTATION_LOCKED mUserRotation=ROTATION_0 mAllowAllRotations=unknown
mCurrentAppOrientation=SCREEN_ORIENTATION_UNSPECIFIED
mCarDockEnablesAccelerometer=true mDeskDockEnablesAccelerometer=true
mLidKeyboardAccessibility=0 mLidNavigationAccessibility=0 mLidControlsScreenLock=false
mLidControlsSleep=false
mLongPressOnBackBehavior=LONG_PRESS_BACK_NOTHING
mLongPressOnHomeBehavior=LONG_PRESS_HOME_NOTHING
mDoubleTapOnHomeBehavior=DOUBLE_TAP_HOME_NOTHING
mShortPressOnPowerBehavior=SHORT_PRESS_POWER_GO_TO_SLEEP
mLongPressOnPowerBehavior=LONG_PRESS_POWER_GLOBAL_ACTIONS
mVeryLongPressOnPowerBehavior=VERY_LONG_PRESS_POWER_NOTHING
mDoublePressOnPowerBehavior=MULTI_PRESS_POWER_NOTHING
mTriplePressOnPowerBehavior=MULTI_PRESS_POWER_NOTHING
mShortPressOnSleepBehavior=SHORT_PRESS_SLEEP_GO_TO_SLEEP
mShortPressOnWindowBehavior=SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE
mAllowStartActivityForLongPressOnPowerDuringSetup=false
mHasSoftInput=true mDismissImeOnBackKeyPressed=false
mIncallPowerBehavior=sleep mIncallBackBehavior=<nothing> mEndcallBehavior=sleep
mHomePressed=false
mAwake=truemScreenOnEarly=true mScreenOnFully=true
mKeyguardDrawComplete=true mWindowManagerDrawComplete=true
mDockLayer=268435456 mStatusBarLayer=0
mShowingDream=false mDreamingLockscreen=false mDreamingSleepToken=null
mStatusBar=Window{78e4362 u0 StatusBar} isStatusBarKeyguard=false
mNavigationBar=Window{efb8e08 u0 NavigationBar}
mFocusedWindow=Window{fdec1cd u0 com.android.settings/com.android.settings.Settings}
mFocusedApp=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}
mTopFullscreenOpaqueWindowState=Window{fdec1cd u0 com.android.settings/com.android.settings.Settings}
mTopFullscreenOpaqueOrDimmingWindowState=Window{fdec1cd u0 com.android.settings/com.android.settings.Settings}
mTopIsFullscreen=false mKeyguardOccluded=false
mKeyguardOccludedChanged=false mPendingKeyguardOccluded=false
mForceStatusBar=false mForceStatusBarFromKeyguard=false
mAllowLockscreenWhenOn=false mLockScreenTimeout=2147483647 mLockScreenTimerActive=false
mLandscapeRotation=ROTATION_0 mSeascapeRotation=ROTATION_180
mPortraitRotation=ROTATION_0 mUpsideDownRotation=ROTATION_90
mDemoHdmiRotation=ROTATION_0 mDemoHdmiRotationLock=false
mUndockedHdmiRotation=-1
mKeyMapping.size=0
BarController.StatusBar
mState=WINDOW_STATE_SHOWING
mTransientBar=TRANSIENT_BAR_NONE
mContentFrame=Rect(0, 0 - 1920, 35)
BarController.NavigationBar
mState=WINDOW_STATE_SHOWING
mTransientBar=TRANSIENT_BAR_NONE
mContentFrame=Rect(0, 1011 - 1920, 1080)
PolicyControl.sImmersiveStatusFilter=null
PolicyControl.sImmersiveNavigationFilter=null
PolicyControl.sImmersivePreconfirmationsFilter=null
WakeGestureListener
mTriggerRequested=false
mSensor=null
WindowOrientationListener
mEnabled=false
mCurrentRotation=ROTATION_0
mSensorType=null
mSensor=null
mRate=2
KeyguardServiceDelegate
showing=false
showingAndNotOccluded=true
inputRestricted=false
occluded=false
secure=false
dreaming=false
systemIsReady=true
deviceHasKeyguard=true
enabled=true
offReason=0
currentUser=-10000
bootCompleted=true
screenState=SCREEN_STATE_ON
interactiveState=INTERACTIVE_STATE_WAKING
KeyguardStateMonitor
mIsShowing=false
mSimSecure=false
mInputRestricted=false
mTrusted=false
mCurrentUserId=0
Looper state:
Looper (android.ui, tid 19) {d921be2}
(Total messages: 0, polling=true, quitting=false)
---------------------------------ANIMATOR STATE---------------------------------------------
WINDOW MANAGER ANIMATOR STATE (dumpsys window animator)
DisplayContentsAnimator #0:
Window #0: WindowStateAnimator{e80eb73 com.android.systemui.ImageWallpaper}
Window #1: WindowStateAnimator{8ee095c com.android.launcher3/com.android.launcher3.Launcher}
Window #2: WindowStateAnimator{59a1f2 com.android.settings/com.android.settings.Settings}
Window #3: WindowStateAnimator{d5c3465 DockedStackDivider}
Window #4: WindowStateAnimator{357453a AssistPreviewPanel}
Window #5: WindowStateAnimator{81c55eb StatusBar}
Window #6: WindowStateAnimator{5005f48 NavigationBar}
DisplayContentsAnimator #1:
mBulkUpdateParams=0x8 ORIENTATION_CHANGE_COMPLETE
---------------------------------SESSIONS---------------------------------------------
WINDOW MANAGER SESSIONS (dumpsys window sessions)
Session Session{4384d1e 1509:1000}:
mNumWindow=0 mCanAddInternalSystemWindow=true mAppOverlaySurfaces=[] mAlertWindowSurfaces=[] mClientDead=false mSurfaceSession=android.view.SurfaceSession@7e0b1e1
mPackageName=com.android.settings
Session Session{5231741 2463:u0a10039}:
mNumWindow=1 mCanAddInternalSystemWindow=false mAppOverlaySurfaces=[] mAlertWindowSurfaces=[] mClientDead=false mSurfaceSession=android.view.SurfaceSession@5e47b06
mPackageName=com.android.launcher3
Session Session{8f8b4f6 15906:1000}:
mNumWindow=1 mCanAddInternalSystemWindow=true mAppOverlaySurfaces=[] mAlertWindowSurfaces=[] mClientDead=false mSurfaceSession=android.view.SurfaceSession@8ade043
mPackageName=com.android.settings
Session Session{905daea 1794:u0a10038}:
mNumWindow=5 mCanAddInternalSystemWindow=true mAppOverlaySurfaces=[] mAlertWindowSurfaces=[] mClientDead=false mSurfaceSession=android.view.SurfaceSession@dd58b1d
mPackageName=com.android.systemui
------------------------------------DISPLAY CONTENTS-------------------------------------------
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
--------------------------------------------副屏---------------------------------------------
Display: mDisplayId=1
init=1024x600 177dpi cur=1024x600 app=1024x600 rng=600x600-1024x1024
deferred=false mLayoutNeeded=false mTouchExcludeRegion=SkRegion()
mLayoutSeq=6
Application tokens in top down Z order:
DockedStackDividerController
mLastVisibility=false
mMinimizedDock=false
mAdjustedForIme=false
mAdjustedForDivider=false
PinnedStackController
defaultBounds=[731,359][1007,514]
movementBounds=[17,52][1007,514]
mIsImeShowing=false
mImeHeight=0
mIsShelfShowing=false
mShelfHeight=0
mReentrySnapFraction=-1.0
mIsMinimized=false
mActions=[]
mDisplayInfo=DisplayInfo{"HDMI Screen", uniqueId "local:1", app 1024 x 600, real 1024 x 600, largest app 1024 x 1024, smallest app 600 x 600, mode 2, defaultMode 2, modes [{id=2, width=1024, height=600, fps=60.000004}], colorMode 0, supportedColorModes [0], hdrCapabilities android.view.Display$HdrCapabilities@40f16308, rotation 0, density 177 (177.0 x 177.0) dpi, layerStack 1, appVsyncOff 1000000, presDeadline 16666666, type HDMI, state ON, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_PRESENTATION, removeMode 0}
DisplayFrames w=1024 h=600 r=0
mStable=[0,0][1024,600]
mStableFullscreen=[0,0][1024,600]
mDock=[0,0][1024,600]
mCurrent=[0,0][1024,600]
mSystem=[0,0][1024,600]
mContent=[0,0][1024,600]
mVoiceContent=[0,0][1024,600]
mOverscan=[0,0][1024,600]
mRestrictedOverscan=[0,0][1024,600]
mRestricted=[0,0][1024,600]
mUnrestricted=[0,0][1024,600]
mDisplayInfoOverscan=[0,0][0,0]
mRotatedDisplayInfoOverscan=[0,0][0,0]
mDisplayCutout=com.android.server.wm.utils.WmDisplayCutout@3c1
--------------------------------------------主屏---------------------------------------------
Display: mDisplayId=0
init=1920x1080 230dpi cur=1920x1080 app=1920x1011 rng=1080x976-1920x1920
deferred=false mLayoutNeeded=false mTouchExcludeRegion=SkRegion((0,0,1920,1080))
mLayoutSeq=440
Application tokens in top down Z order:
mStackId=3
mDeferRemoval=false
mBounds=[0,0][1920,1080]--------------------------------------TaskStack
taskId=5
mBounds=[0,0][1920,1080]-------------------------------------------Task
mdr=false
appTokens=[AppWindowToken{12b963b token=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}}]
mTempInsetBounds=[0,0][0,0]
Activity #0 AppWindowToken{12b963b token=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}}
windows=[Window{fdec1cd u0 com.android.settings/com.android.settings.Settings}]
windowType=2 hidden=false hasVisible=true
app=true mVoiceInteraction=false
task={taskId=5 appTokens=[AppWindowToken{12b963b token=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}}] mdr=false}
mFillsParent=true mOrientation=-1
hiddenRequested=false mClientHidden=false reportedDrawn=true reportedVisible=true
mNumInterestingWindows=1 mNumDrawnWindows=1 inPendingTransaction=false allDrawn=true lastAllDrawn=true)
startingData=null removed=false firstWindowDrawn=true mIsExiting=false
controller=AppWindowContainerController{ token=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}} mContainer=AppWindowToken{12b963b token=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}} mListener=ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}
mStackId=0
mDeferRemoval=false
mBounds=[0,0][1920,1080]
taskId=2
mBounds=[0,0][1920,1080]
mdr=false
appTokens=[AppWindowToken{cb4bc98 token=Token{2bd967b ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}}}]
mTempInsetBounds=[0,0][0,0]
Activity #0 AppWindowToken{cb4bc98 token=Token{2bd967b ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}}}
windows=[Window{6a06e2a u0 com.android.launcher3/com.android.launcher3.Launcher}]
windowType=2 hidden=true hasVisible=true
app=true mVoiceInteraction=false
task={taskId=2 appTokens=[AppWindowToken{cb4bc98 token=Token{2bd967b ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}}}] mdr=false}
mFillsParent=true mOrientation=-1
hiddenRequested=true mClientHidden=true reportedDrawn=false reportedVisible=false
mAppStopped=true
mNumInterestingWindows=1 mNumDrawnWindows=1 inPendingTransaction=false allDrawn=true lastAllDrawn=true)
startingData=null removed=false firstWindowDrawn=true mIsExiting=false
controller=AppWindowContainerController{ token=Token{2bd967b ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}} mContainer=AppWindowToken{cb4bc98 token=Token{2bd967b ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}}} mListener=ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}}
homeStack=Stack=0
DockedStackDividerController----------------------------
mLastVisibility=false
mMinimizedDock=false
mAdjustedForIme=false
mAdjustedForDivider=false
PinnedStackController
defaultBounds=[1456,740][1897,988]
movementBounds=[23,58][1897,988]
mIsImeShowing=false
mImeHeight=0
mIsShelfShowing=false
mShelfHeight=130
mReentrySnapFraction=-1.0
mIsMinimized=false
mActions=[]
mDisplayInfo=DisplayInfo{"Built-in Screen", uniqueId "local:0", app 1920 x 1011, real 1920 x 1080, largest app 1920 x 1920, smallest app 1080 x 976, mode 1, defaultMode 1, modes [{id=1, width=1920, height=1080, fps=60.000004}], colorMode 0, supportedColorModes [0], hdrCapabilities android.view.Display$HdrCapabilities@40f16308, rotation 0, density 230 (320.842 x 318.976) dpi, layerStack 0, appVsyncOff 1000000, presDeadline 16666666, type BUILT_IN, state ON, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, removeMode 0}
DisplayFrames w=1920 h=1080 r=0
mStable=[0,35][1920,1011]
mStableFullscreen=[0,0][1920,1011]
mDock=[0,35][1920,1011]
mCurrent=[0,35][1920,1011]
mSystem=[0,0][1920,1080]
mContent=[0,35][1920,1011]
mVoiceContent=[0,35][1920,1011]
mOverscan=[0,0][1920,1080]
mRestrictedOverscan=[0,0][1920,1011]
mRestricted=[0,0][1920,1011]
mUnrestricted=[0,0][1920,1080]
mDisplayInfoOverscan=[0,0][0,0]
mRotatedDisplayInfoOverscan=[0,0][0,0]
mDisplayCutout=com.android.server.wm.utils.WmDisplayCutout@3c1
---------------------------------------------------WINDOW MANAGER TOKENS--------------------------------------
WINDOW MANAGER TOKENS (dumpsys window tokens)
All tokens:
Display #0
AppWindowToken{cb4bc98 token=Token{2bd967b ActivityRecord{349ee0a u0 com.android.launcher3/.Launcher t2}}}
WindowToken{d5007f8 android.os.Binder@693735b}
WindowToken{2ceb304 android.os.BinderProxy@c3cf317}
WindowToken{4e007ab android.os.BinderProxy@477a5fa}
WallpaperWindowToken{c76f335 token=android.os.Binder@ff4416c}
WindowToken{d45322d android.os.BinderProxy@658c144}
WindowToken{f4c6cd4 android.os.BinderProxy@ab93227}
AppWindowToken{12b963b token=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}}
--------------------------------------------------WINDOW MANAGER WINDOWS----------------------------------
WINDOW MANAGER WINDOWS (dumpsys window windows)
------------------------------------导航栏窗口------------------------------------------------------
Window #0 Window{efb8e08 u0 NavigationBar}:
mDisplayId=0 stackId=0 mSession=Session{905daea 1794:u0a10038} mClient=android.os.BinderProxy@2b2a025
mOwnerUid=10038 mShowToOwnerOnly=false package=com.android.systemui appop=NONE
mAttrs={(0,0)(fillxfill) sim={adjust=pan} ty=NAVIGATION_BAR fmt=TRANSLUCENT
fl=NOT_FOCUSABLE NOT_TOUCH_MODAL TOUCHABLE_WHEN_WAKING WATCH_OUTSIDE_TOUCH SPLIT_TOUCH HARDWARE_ACCELERATED FLAG_SLIPPERY}
Requested w=1920 h=69 mLayoutSeq=440
mHasSurface=true isReadyForDisplay()=true mWindowRemovalAllowed=false
WindowStateAnimator{5005f48 NavigationBar}:
Surface: shown=true layer=0 alpha=1.0 rect=(0.0,0.0) 1920 x 69 transform=(1.0, 0.0, 1.0, 0.0)
mLastFreezeDuration=+739ms
isOnScreen=true
isVisible=true
----------------------------------状态栏窗口-------------------------------------------------
Window #1 Window{78e4362 u0 StatusBar}:
mDisplayId=0 stackId=0 mSession=Session{905daea 1794:u0a10038} mClient=android.os.BinderProxy@9095257
mOwnerUid=10038 mShowToOwnerOnly=false package=com.android.systemui appop=NONE
mAttrs={(0,0)(fillx35) gr=TOP CENTER_VERTICAL sim={adjust=resize} layoutInDisplayCutoutMode=always ty=STATUS_BAR fmt=TRANSLUCENT
fl=NOT_FOCUSABLE TOUCHABLE_WHEN_WAKING WATCH_OUTSIDE_TOUCH SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS}
Requested w=1920 h=35 mLayoutSeq=440
mHasSurface=true isReadyForDisplay()=true mWindowRemovalAllowed=false
WindowStateAnimator{81c55eb StatusBar}:
Surface: shown=true layer=0 alpha=1.0 rect=(0.0,0.0) 1920 x 35 transform=(1.0, 0.0, 1.0, 0.0)
mLastFreezeDuration=+742ms
isOnScreen=true
isVisible=true
-------------------------------------AssistPreviewPanel-------------------------------------------------------
Window #2 Window{cab1e7d u0 AssistPreviewPanel}:
mDisplayId=0 stackId=0 mSession=Session{905daea 1794:u0a10038} mClient=android.os.BinderProxy@8c13ce6
mOwnerUid=10038 mShowToOwnerOnly=true package=com.android.systemui appop=NONE
mAttrs={(0,0)(fillx359) gr=BOTTOM START CENTER sim={state=unchanged adjust=nothing} ty=VOICE_INTERACTION_STARTING fmt=TRANSLUCENT
fl=NOT_FOCUSABLE NOT_TOUCHABLE LAYOUT_IN_SCREEN HARDWARE_ACCELERATED
vsysui=LAYOUT_STABLE LAYOUT_HIDE_NAVIGATION LAYOUT_FULLSCREEN}
Requested w=0 h=0 mLayoutSeq=133
mHasSurface=false isReadyForDisplay()=false mWindowRemovalAllowed=false
WindowStateAnimator{357453a AssistPreviewPanel}:
mShownAlpha=0.0 mAlpha=1.0 mLastAlpha=0.0
isOnScreen=false
isVisible=false
---------------------------------------程序抽屉---------------------------------------------------
Window #3 Window{5a5a0ed u0 DockedStackDivider}:
mDisplayId=0 stackId=0 mSession=Session{905daea 1794:u0a10038} mClient=android.os.BinderProxy@148ab96
mOwnerUid=10038 mShowToOwnerOnly=false package=com.android.systemui appop=NONE
mAttrs={(0,0)(69xfill) sim={adjust=pan} layoutInDisplayCutoutMode=always ty=DOCK_DIVIDER fmt=TRANSLUCENT
fl=NOT_FOCUSABLE NOT_TOUCH_MODAL WATCH_OUTSIDE_TOUCH SPLIT_TOUCH HARDWARE_ACCELERATED FLAG_SLIPPERY
pfl=NO_MOVE_ANIMATION
vsysui=LAYOUT_STABLE LAYOUT_HIDE_NAVIGATION LAYOUT_FULLSCREEN}
Requested w=69 h=976 mLayoutSeq=440
mPolicyVisibility=false mPolicyVisibilityAfterAnim=false mAppOpVisibility=true parentHidden=false mPermanentlyHidden=false mHiddenWhileSuspended=false mForceHideNonSystemOverlayWindow=false
mHasSurface=false isReadyForDisplay()=false mWindowRemovalAllowed=false
WindowStateAnimator{d5c3465 DockedStackDivider}:
mShownAlpha=0.0 mAlpha=1.0 mLastAlpha=0.0
isOnScreen=false
isVisible=false
--------------------------------------------------------Settings-------------------------------------------
Window #4 Window{fdec1cd u0 com.android.settings/com.android.settings.Settings}:
mDisplayId=0 stackId=3 mSession=Session{8f8b4f6 15906:1000} mClient=android.os.BinderProxy@e664b64
mOwnerUid=1000 mShowToOwnerOnly=true package=com.android.settings appop=NONE
mAttrs={(0,0)(fillxfill) sim={adjust=resize forwardNavigation} ty=BASE_APPLICATION wanim=0x10302f8
fl=LAYOUT_IN_SCREEN LAYOUT_INSET_DECOR SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS
pfl=FORCE_DRAW_STATUS_BAR_BACKGROUND
vsysui=LIGHT_STATUS_BAR LIGHT_NAVIGATION_BAR}
Requested w=1920 h=1080 mLayoutSeq=440
mHasSurface=true isReadyForDisplay()=true mWindowRemovalAllowed=false
WindowStateAnimator{59a1f2 com.android.settings/com.android.settings.Settings}:
Surface: shown=true layer=0 alpha=1.0 rect=(0.0,0.0) 1920 x 1080 transform=(1.0, 0.0, 1.0, 0.0)
isOnScreen=true
isVisible=true
--------------------------------------------------------Launcher-------------------------------------------
Window #5 Window{6a06e2a u0 com.android.launcher3/com.android.launcher3.Launcher}:
mDisplayId=0 stackId=0 mSession=Session{5231741 2463:u0a10039} mClient=android.os.BinderProxy@73dab15
mOwnerUid=10039 mShowToOwnerOnly=true package=com.android.launcher3 appop=NONE
mAttrs={(0,0)(fillxfill) sim={adjust=pan} ty=BASE_APPLICATION fmt=TRANSPARENT wanim=0x10302f8
fl=LAYOUT_IN_SCREEN LAYOUT_INSET_DECOR SHOW_WALLPAPER SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS
pfl=FORCE_DRAW_STATUS_BAR_BACKGROUND
vsysui=LAYOUT_STABLE LAYOUT_HIDE_NAVIGATION LAYOUT_FULLSCREEN LIGHT_STATUS_BAR LIGHT_NAVIGATION_BAR}
Requested w=1920 h=1080 mLayoutSeq=427
mHasSurface=false isReadyForDisplay()=false mWindowRemovalAllowed=false
WindowStateAnimator{8ee095c com.android.launcher3/com.android.launcher3.Launcher}:
mWallpaperX=0.0 mWallpaperY=0.5
mWallpaperXStep=0.33333334 mWallpaperYStep=1.0
isOnScreen=false
isVisible=false
----------------------------------------------------------壁纸----------------------------------------------
Window #6 Window{567452a u0 com.android.systemui.ImageWallpaper}:
mDisplayId=0 stackId=0 mSession=Session{905daea 1794:u0a10038} mClient=android.os.BinderProxy@20d7e15
mOwnerUid=10038 mShowToOwnerOnly=true package=com.android.systemui appop=NONE
mAttrs={(0,0)(1920x1080) gr=TOP START CENTER layoutInDisplayCutoutMode=always ty=WALLPAPER fmt=RGBX_8888 wanim=0x1030308
fl=NOT_FOCUSABLE NOT_TOUCHABLE LAYOUT_IN_SCREEN LAYOUT_NO_LIMITS LAYOUT_INSET_DECOR}
Requested w=1920 h=1080 mLayoutSeq=434
mIsImWindow=false mIsWallpaper=true mIsFloatingLayer=true mWallpaperVisible=false
mHasSurface=true isReadyForDisplay()=false mWindowRemovalAllowed=false
WindowStateAnimator{e80eb73 com.android.systemui.ImageWallpaper}:
Surface: shown=false layer=0 alpha=1.0 rect=(0.0,0.0) 1920 x 1080 transform=(1.0, 0.0, 1.0, 0.0)
mLastFreezeDuration=+1s4ms
mWallpaperX=0.0 mWallpaperY=0.5
mWallpaperXStep=0.33333334 mWallpaperYStep=1.0
isOnScreen=true
isVisible=false
----------------------------------------------------------mGlobalConfiguration------------------------------------
mGlobalConfiguration={1.0 ?mcc?mnc [zh_CN_#Hans,en_US] ldltr sw751dp w1335dp h678dp 230dpi lrg long land finger -keyb/v/h -nav/h winConfig={
mBounds=Rect(0, 0 - 1920, 1011)
mAppBounds=Rect(0, 0 - 1920, 1011)
mWindowingMode=fullscreen
mActivityType=undefined} s.7}
mHasPermanentDpad=false
mCurrentFocus=Window{fdec1cd u0 com.android.settings/com.android.settings.Settings}
mFocusedApp=AppWindowToken{12b963b token=Token{3514ca ActivityRecord{d784835 u0 com.android.settings/.Settings t5}}}
mInTouchMode=true
mLastDisplayFreezeDuration=+748ms due to Window{78e4362 u0 StatusBar}
mLastWakeLockHoldingWindow=null mLastWakeLockObscuringWindow=Window{e73184c u0 com.android.settings/com.android.settings.Settings}
InputConsumers:
name=pip_input_consumer pid=1794 user=UserHandle{0}
SnapshotCache
代码
WindowManagerService
public class WindowManagerService extends IWindowManager . Stub
implements Watchdog . Monitor , WindowManagerPolicy . WindowManagerFuncs {
final WindowManagerPolicy mPolicy ;
final ArraySet < Session > mSessions = new ArraySet <>();
final WindowAnimator mAnimator ;
// The root of the device window hierarchy.
RootWindowContainer mRoot ;
private void dumpPolicyLocked ( PrintWriter pw , String [] args , boolean dumpAll ) {
pw . println ( "WINDOW MANAGER POLICY STATE (dumpsys window policy)" );
mPolicy . dump ( " " , pw , args );
}
private void dumpAnimatorLocked ( PrintWriter pw , String [] args , boolean dumpAll ) {
pw . println ( "WINDOW MANAGER ANIMATOR STATE (dumpsys window animator)" );
mAnimator . dumpLocked ( pw , " " , dumpAll );
}
private void dumpTokensLocked ( PrintWriter pw , boolean dumpAll ) {
pw . println ( "WINDOW MANAGER TOKENS (dumpsys window tokens)" );
mRoot . dumpTokens ( pw , dumpAll );
if (! mOpeningApps . isEmpty () || ! mClosingApps . isEmpty ()) {
pw . println ();
if ( mOpeningApps . size () > 0 ) {
pw . print ( " mOpeningApps=" ); pw . println ( mOpeningApps );
}
if ( mClosingApps . size () > 0 ) {
pw . print ( " mClosingApps=" ); pw . println ( mClosingApps );
}
}
}
private void dumpSessionsLocked ( PrintWriter pw , boolean dumpAll ) {
pw . println ( "WINDOW MANAGER SESSIONS (dumpsys window sessions)" );
for ( int i = 0 ; i < mSessions . size (); i ++) {
Session s = mSessions . valueAt ( i );
pw . print ( " Session " ); pw . print ( s ); pw . println ( ':' );
s . dump ( pw , " " );
}
}
private void dumpWindowsLocked ( PrintWriter pw , boolean dumpAll ,
ArrayList < WindowState > windows ) {
pw . println ( "WINDOW MANAGER WINDOWS (dumpsys window windows)" );
dumpWindowsNoHeaderLocked ( pw , dumpAll , windows );
}
private void dumpWindowsNoHeaderLocked ( PrintWriter pw , boolean dumpAll ,
ArrayList < WindowState > windows ) {
mRoot . dumpWindowsNoHeader ( pw , dumpAll , windows );
if (! mHidingNonSystemOverlayWindows . isEmpty ()) {
pw . println ();
pw . println ( " Hiding System Alert Windows:" );
for ( int i = mHidingNonSystemOverlayWindows . size () - 1 ; i >= 0 ; i --) {
final WindowState w = mHidingNonSystemOverlayWindows . get ( i );
pw . print ( " #" ); pw . print ( i ); pw . print ( ' ' );
pw . print ( w );
if ( dumpAll ) {
pw . println ( ":" );
w . dump ( pw , " " , true );
} else {
pw . println ();
}
}
}
if ( mPendingRemove . size () > 0 ) {
pw . println ();
pw . println ( " Remove pending for:" );
for ( int i = mPendingRemove . size ()- 1 ; i >= 0 ; i --) {
WindowState w = mPendingRemove . get ( i );
if ( windows == null || windows . contains ( w )) {
pw . print ( " Remove #" ); pw . print ( i ); pw . print ( ' ' );
pw . print ( w );
if ( dumpAll ) {
pw . println ( ":" );
w . dump ( pw , " " , true );
} else {
pw . println ();
}
}
}
}
if ( mForceRemoves != null && mForceRemoves . size () > 0 ) {
pw . println ();
pw . println ( " Windows force removing:" );
for ( int i = mForceRemoves . size ()- 1 ; i >= 0 ; i --) {
WindowState w = mForceRemoves . get ( i );
pw . print ( " Removing #" ); pw . print ( i ); pw . print ( ' ' );
pw . print ( w );
if ( dumpAll ) {
pw . println ( ":" );
w . dump ( pw , " " , true );
} else {
pw . println ();
}
}
}
if ( mDestroySurface . size () > 0 ) {
pw . println ();
pw . println ( " Windows waiting to destroy their surface:" );
for ( int i = mDestroySurface . size ()- 1 ; i >= 0 ; i --) {
WindowState w = mDestroySurface . get ( i );
if ( windows == null || windows . contains ( w )) {
pw . print ( " Destroy #" ); pw . print ( i ); pw . print ( ' ' );
pw . print ( w );
if ( dumpAll ) {
pw . println ( ":" );
w . dump ( pw , " " , true );
} else {
pw . println ();
}
}
}
}
if ( mLosingFocus . size () > 0 ) {
pw . println ();
pw . println ( " Windows losing focus:" );
for ( int i = mLosingFocus . size ()- 1 ; i >= 0 ; i --) {
WindowState w = mLosingFocus . get ( i );
if ( windows == null || windows . contains ( w )) {
pw . print ( " Losing #" ); pw . print ( i ); pw . print ( ' ' );
pw . print ( w );
if ( dumpAll ) {
pw . println ( ":" );
w . dump ( pw , " " , true );
} else {
pw . println ();
}
}
}
}
if ( mResizingWindows . size () > 0 ) {
pw . println ();
pw . println ( " Windows waiting to resize:" );
for ( int i = mResizingWindows . size ()- 1 ; i >= 0 ; i --) {
WindowState w = mResizingWindows . get ( i );
if ( windows == null || windows . contains ( w )) {
pw . print ( " Resizing #" ); pw . print ( i ); pw . print ( ' ' );
pw . print ( w );
if ( dumpAll ) {
pw . println ( ":" );
w . dump ( pw , " " , true );
} else {
pw . println ();
}
}
}
}
if ( mWaitingForDrawn . size () > 0 ) {
pw . println ();
pw . println ( " Clients waiting for these windows to be drawn:" );
for ( int i = mWaitingForDrawn . size ()- 1 ; i >= 0 ; i --) {
WindowState win = mWaitingForDrawn . get ( i );
pw . print ( " Waiting #" ); pw . print ( i ); pw . print ( ' ' ); pw . print ( win );
}
}
pw . println ();
pw . print ( " mGlobalConfiguration=" ); pw . println ( mRoot . getConfiguration ());
pw . print ( " mHasPermanentDpad=" ); pw . println ( mHasPermanentDpad );
pw . print ( " mCurrentFocus=" ); pw . println ( mCurrentFocus );
if ( mLastFocus != mCurrentFocus ) {
pw . print ( " mLastFocus=" ); pw . println ( mLastFocus );
}
pw . print ( " mFocusedApp=" ); pw . println ( mFocusedApp );
if ( mInputMethodTarget != null ) {
pw . print ( " mInputMethodTarget=" ); pw . println ( mInputMethodTarget );
}
pw . print ( " mInTouchMode=" ); pw . println ( mInTouchMode );
pw . print ( " mLastDisplayFreezeDuration=" );
TimeUtils . formatDuration ( mLastDisplayFreezeDuration , pw );
if ( mLastFinishedFreezeSource != null ) {
pw . print ( " due to " );
pw . print ( mLastFinishedFreezeSource );
}
pw . println ();
pw . print ( " mLastWakeLockHoldingWindow=" ); pw . print ( mLastWakeLockHoldingWindow );
pw . print ( " mLastWakeLockObscuringWindow=" ); pw . print ( mLastWakeLockObscuringWindow );
pw . println ();
mInputMonitor . dump ( pw , " " );
mUnknownAppVisibilityController . dump ( pw , " " );
mTaskSnapshotController . dump ( pw , " " );
if ( dumpAll ) {
pw . print ( " mSystemDecorLayer=" ); pw . print ( mSystemDecorLayer );
pw . print ( " mScreenRect=" ); pw . println ( mScreenRect . toShortString ());
if ( mLastStatusBarVisibility != 0 ) {
pw . print ( " mLastStatusBarVisibility=0x" );
pw . println ( Integer . toHexString ( mLastStatusBarVisibility ));
}
if ( mInputMethodWindow != null ) {
pw . print ( " mInputMethodWindow=" ); pw . println ( mInputMethodWindow );
}
mWindowPlacerLocked . dump ( pw , " " );
mRoot . mWallpaperController . dump ( pw , " " );
pw . print ( " mSystemBooted=" ); pw . print ( mSystemBooted );
pw . print ( " mDisplayEnabled=" ); pw . println ( mDisplayEnabled );
mRoot . dumpLayoutNeededDisplayIds ( pw );
pw . print ( " mTransactionSequence=" ); pw . println ( mTransactionSequence );
pw . print ( " mDisplayFrozen=" ); pw . print ( mDisplayFrozen );
pw . print ( " windows=" ); pw . print ( mWindowsFreezingScreen );
pw . print ( " client=" ); pw . print ( mClientFreezingScreen );
pw . print ( " apps=" ); pw . print ( mAppsFreezingScreen );
pw . print ( " waitingForConfig=" ); pw . println ( mWaitingForConfig );
final DisplayContent defaultDisplayContent = getDefaultDisplayContentLocked ();
pw . print ( " mRotation=" ); pw . print ( defaultDisplayContent . getRotation ());
pw . print ( " mAltOrientation=" );
pw . println ( defaultDisplayContent . getAltOrientation ());
pw . print ( " mLastWindowForcedOrientation=" );
pw . print ( defaultDisplayContent . getLastWindowForcedOrientation ());
pw . print ( " mLastOrientation=" );
pw . println ( defaultDisplayContent . getLastOrientation ());
pw . print ( " mDeferredRotationPauseCount=" ); pw . println ( mDeferredRotationPauseCount );
pw . print ( " Animation settings: disabled=" ); pw . print ( mAnimationsDisabled );
pw . print ( " window=" ); pw . print ( mWindowAnimationScaleSetting );
pw . print ( " transition=" ); pw . print ( mTransitionAnimationScaleSetting );
pw . print ( " animator=" ); pw . println ( mAnimatorDurationScaleSetting );
pw . print ( " mSkipAppTransitionAnimation=" ); pw . println ( mSkipAppTransitionAnimation );
pw . println ( " mLayoutToAnim:" );
mAppTransition . dump ( pw , " " );
if ( mRecentsAnimationController != null ) {
pw . print ( " mRecentsAnimationController=" ); pw . println ( mRecentsAnimationController );
mRecentsAnimationController . dump ( pw , " " );
}
}
}
private boolean dumpWindows ( PrintWriter pw , String name , String [] args , int opti ,
boolean dumpAll ) {
final ArrayList < WindowState > windows = new ArrayList ();
if ( "apps" . equals ( name ) || "visible" . equals ( name ) || "visible-apps" . equals ( name )) {
final boolean appsOnly = name . contains ( "apps" );
final boolean visibleOnly = name . contains ( "visible" );
synchronized ( mWindowMap ) {
if ( appsOnly ) {
mRoot . dumpDisplayContents ( pw );
}
mRoot . forAllWindows (( w ) -> {
if ((! visibleOnly || w . mWinAnimator . getShown ())
&& (! appsOnly || w . mAppToken != null )) {
windows . add ( w );
}
}, true /* traverseTopToBottom */ );
}
} else {
synchronized ( mWindowMap ) {
mRoot . getWindowsByName ( windows , name );
}
}
if ( windows . size () <= 0 ) {
return false ;
}
synchronized ( mWindowMap ) {
dumpWindowsLocked ( pw , dumpAll , windows );
}
return true ;
}
}
PhoneWindowManager
public class PhoneWindowManager implements WindowManagerPolicy {
@Override
public void dump ( String prefix , PrintWriter pw , String [] args ) {
pw . print ( prefix ); pw . print ( "mSafeMode=" ); pw . print ( mSafeMode );
pw . print ( " mSystemReady=" ); pw . print ( mSystemReady );
pw . print ( " mSystemBooted=" ); pw . println ( mSystemBooted );
pw . print ( prefix ); pw . print ( "mLidState=" );
pw . print ( WindowManagerFuncs . lidStateToString ( mLidState ));
pw . print ( " mLidOpenRotation=" );
pw . println ( Surface . rotationToString ( mLidOpenRotation ));
pw . print ( prefix ); pw . print ( "mCameraLensCoverState=" );
pw . print ( WindowManagerFuncs . cameraLensStateToString ( mCameraLensCoverState ));
pw . print ( " mHdmiPlugged=" ); pw . println ( mHdmiPlugged );
if ( mLastSystemUiFlags != 0 || mResettingSystemUiFlags != 0
|| mForceClearedSystemUiFlags != 0 ) {
pw . print ( prefix ); pw . print ( "mLastSystemUiFlags=0x" );
pw . print ( Integer . toHexString ( mLastSystemUiFlags ));
pw . print ( " mResettingSystemUiFlags=0x" );
pw . print ( Integer . toHexString ( mResettingSystemUiFlags ));
pw . print ( " mForceClearedSystemUiFlags=0x" );
pw . println ( Integer . toHexString ( mForceClearedSystemUiFlags ));
}
if ( mLastFocusNeedsMenu ) {
pw . print ( prefix ); pw . print ( "mLastFocusNeedsMenu=" );
pw . println ( mLastFocusNeedsMenu );
}
pw . print ( prefix ); pw . print ( "mWakeGestureEnabledSetting=" );
pw . println ( mWakeGestureEnabledSetting );
pw . print ( prefix );
pw . print ( "mSupportAutoRotation=" ); pw . print ( mSupportAutoRotation );
pw . print ( " mOrientationSensorEnabled=" ); pw . println ( mOrientationSensorEnabled );
pw . print ( prefix ); pw . print ( "mUiMode=" ); pw . print ( Configuration . uiModeToString ( mUiMode ));
pw . print ( " mDockMode=" ); pw . println ( Intent . dockStateToString ( mDockMode ));
pw . print ( prefix ); pw . print ( "mEnableCarDockHomeCapture=" );
pw . print ( mEnableCarDockHomeCapture );
pw . print ( " mCarDockRotation=" );
pw . print ( Surface . rotationToString ( mCarDockRotation ));
pw . print ( " mDeskDockRotation=" );
pw . println ( Surface . rotationToString ( mDeskDockRotation ));
pw . print ( prefix ); pw . print ( "mUserRotationMode=" );
pw . print ( WindowManagerPolicy . userRotationModeToString ( mUserRotationMode ));
pw . print ( " mUserRotation=" ); pw . print ( Surface . rotationToString ( mUserRotation ));
pw . print ( " mAllowAllRotations=" );
pw . println ( allowAllRotationsToString ( mAllowAllRotations ));
pw . print ( prefix ); pw . print ( "mCurrentAppOrientation=" );
pw . println ( ActivityInfo . screenOrientationToString ( mCurrentAppOrientation ));
pw . print ( prefix ); pw . print ( "mCarDockEnablesAccelerometer=" );
pw . print ( mCarDockEnablesAccelerometer );
pw . print ( " mDeskDockEnablesAccelerometer=" );
pw . println ( mDeskDockEnablesAccelerometer );
pw . print ( prefix ); pw . print ( "mLidKeyboardAccessibility=" );
pw . print ( mLidKeyboardAccessibility );
pw . print ( " mLidNavigationAccessibility=" ); pw . print ( mLidNavigationAccessibility );
pw . print ( " mLidControlsScreenLock=" ); pw . println ( mLidControlsScreenLock );
pw . print ( prefix ); pw . print ( "mLidControlsSleep=" ); pw . println ( mLidControlsSleep );
pw . print ( prefix );
pw . print ( "mLongPressOnBackBehavior=" );
pw . println ( longPressOnBackBehaviorToString ( mLongPressOnBackBehavior ));
pw . print ( prefix );
pw . print ( "mLongPressOnHomeBehavior=" );
pw . println ( longPressOnHomeBehaviorToString ( mLongPressOnHomeBehavior ));
pw . print ( prefix );
pw . print ( "mDoubleTapOnHomeBehavior=" );
pw . println ( doubleTapOnHomeBehaviorToString ( mDoubleTapOnHomeBehavior ));
pw . print ( prefix );
pw . print ( "mShortPressOnPowerBehavior=" );
pw . println ( shortPressOnPowerBehaviorToString ( mShortPressOnPowerBehavior ));
pw . print ( prefix );
pw . print ( "mLongPressOnPowerBehavior=" );
pw . println ( longPressOnPowerBehaviorToString ( mLongPressOnPowerBehavior ));
pw . print ( prefix );
pw . print ( "mVeryLongPressOnPowerBehavior=" );
pw . println ( veryLongPressOnPowerBehaviorToString ( mVeryLongPressOnPowerBehavior ));
pw . print ( prefix );
pw . print ( "mDoublePressOnPowerBehavior=" );
pw . println ( multiPressOnPowerBehaviorToString ( mDoublePressOnPowerBehavior ));
pw . print ( prefix );
pw . print ( "mTriplePressOnPowerBehavior=" );
pw . println ( multiPressOnPowerBehaviorToString ( mTriplePressOnPowerBehavior ));
pw . print ( prefix );
pw . print ( "mShortPressOnSleepBehavior=" );
pw . println ( shortPressOnSleepBehaviorToString ( mShortPressOnSleepBehavior ));
pw . print ( prefix );
pw . print ( "mShortPressOnWindowBehavior=" );
pw . println ( shortPressOnWindowBehaviorToString ( mShortPressOnWindowBehavior ));
pw . print ( prefix );
pw . print ( "mAllowStartActivityForLongPressOnPowerDuringSetup=" );
pw . println ( mAllowStartActivityForLongPressOnPowerDuringSetup );
pw . print ( prefix );
pw . print ( "mHasSoftInput=" ); pw . print ( mHasSoftInput );
pw . print ( " mDismissImeOnBackKeyPressed=" ); pw . println ( mDismissImeOnBackKeyPressed );
pw . print ( prefix );
pw . print ( "mIncallPowerBehavior=" );
pw . print ( incallPowerBehaviorToString ( mIncallPowerBehavior ));
pw . print ( " mIncallBackBehavior=" );
pw . print ( incallBackBehaviorToString ( mIncallBackBehavior ));
pw . print ( " mEndcallBehavior=" );
pw . println ( endcallBehaviorToString ( mEndcallBehavior ));
pw . print ( prefix ); pw . print ( "mHomePressed=" ); pw . println ( mHomePressed );
pw . print ( prefix );
pw . print ( "mAwake=" ); pw . print ( mAwake );
pw . print ( "mScreenOnEarly=" ); pw . print ( mScreenOnEarly );
pw . print ( " mScreenOnFully=" ); pw . println ( mScreenOnFully );
pw . print ( prefix ); pw . print ( "mKeyguardDrawComplete=" ); pw . print ( mKeyguardDrawComplete );
pw . print ( " mWindowManagerDrawComplete=" ); pw . println ( mWindowManagerDrawComplete );
pw . print ( prefix ); pw . print ( "mDockLayer=" ); pw . print ( mDockLayer );
pw . print ( " mStatusBarLayer=" ); pw . println ( mStatusBarLayer );
pw . print ( prefix ); pw . print ( "mShowingDream=" ); pw . print ( mShowingDream );
pw . print ( " mDreamingLockscreen=" ); pw . print ( mDreamingLockscreen );
pw . print ( " mDreamingSleepToken=" ); pw . println ( mDreamingSleepToken );
if ( mLastInputMethodWindow != null ) {
pw . print ( prefix ); pw . print ( "mLastInputMethodWindow=" );
pw . println ( mLastInputMethodWindow );
}
if ( mLastInputMethodTargetWindow != null ) {
pw . print ( prefix ); pw . print ( "mLastInputMethodTargetWindow=" );
pw . println ( mLastInputMethodTargetWindow );
}
//---------------------------------------状态栏------------------------------------
if ( mStatusBar != null ) {
pw . print ( prefix ); pw . print ( "mStatusBar=" );
pw . print ( mStatusBar ); pw . print ( " isStatusBarKeyguard=" );
pw . println ( isStatusBarKeyguard ());
}
if ( mNavigationBar != null ) {
pw . print ( prefix ); pw . print ( "mNavigationBar=" );
pw . println ( mNavigationBar );
}
if ( mFocusedWindow != null ) {
pw . print ( prefix ); pw . print ( "mFocusedWindow=" );
pw . println ( mFocusedWindow );
}
if ( mFocusedApp != null ) {
pw . print ( prefix ); pw . print ( "mFocusedApp=" );
pw . println ( mFocusedApp );
}
//-------------------------------------------------------------------------------
if ( mTopFullscreenOpaqueWindowState != null ) {
pw . print ( prefix ); pw . print ( "mTopFullscreenOpaqueWindowState=" );
pw . println ( mTopFullscreenOpaqueWindowState );
}
if ( mTopFullscreenOpaqueOrDimmingWindowState != null ) {
pw . print ( prefix ); pw . print ( "mTopFullscreenOpaqueOrDimmingWindowState=" );
pw . println ( mTopFullscreenOpaqueOrDimmingWindowState );
}
if ( mForcingShowNavBar ) {
pw . print ( prefix ); pw . print ( "mForcingShowNavBar=" );
pw . println ( mForcingShowNavBar ); pw . print ( "mForcingShowNavBarLayer=" );
pw . println ( mForcingShowNavBarLayer );
}
pw . print ( prefix ); pw . print ( "mTopIsFullscreen=" ); pw . print ( mTopIsFullscreen );
pw . print ( " mKeyguardOccluded=" ); pw . println ( mKeyguardOccluded );
pw . print ( prefix );
pw . print ( "mKeyguardOccludedChanged=" ); pw . print ( mKeyguardOccludedChanged );
pw . print ( " mPendingKeyguardOccluded=" ); pw . println ( mPendingKeyguardOccluded );
pw . print ( prefix ); pw . print ( "mForceStatusBar=" ); pw . print ( mForceStatusBar );
pw . print ( " mForceStatusBarFromKeyguard=" );
pw . println ( mForceStatusBarFromKeyguard );
pw . print ( prefix ); pw . print ( "mAllowLockscreenWhenOn=" ); pw . print ( mAllowLockscreenWhenOn );
pw . print ( " mLockScreenTimeout=" ); pw . print ( mLockScreenTimeout );
pw . print ( " mLockScreenTimerActive=" ); pw . println ( mLockScreenTimerActive );
pw . print ( prefix ); pw . print ( "mLandscapeRotation=" );
pw . print ( Surface . rotationToString ( mLandscapeRotation ));
pw . print ( " mSeascapeRotation=" );
pw . println ( Surface . rotationToString ( mSeascapeRotation ));
pw . print ( prefix ); pw . print ( "mPortraitRotation=" );
pw . print ( Surface . rotationToString ( mPortraitRotation ));
pw . print ( " mUpsideDownRotation=" );
pw . println ( Surface . rotationToString ( mUpsideDownRotation ));
pw . print ( prefix ); pw . print ( "mDemoHdmiRotation=" );
pw . print ( Surface . rotationToString ( mDemoHdmiRotation ));
pw . print ( " mDemoHdmiRotationLock=" ); pw . println ( mDemoHdmiRotationLock );
pw . print ( prefix ); pw . print ( "mUndockedHdmiRotation=" );
pw . println ( Surface . rotationToString ( mUndockedHdmiRotation ));
if ( mHasFeatureLeanback ) {
pw . print ( prefix );
pw . print ( "mAccessibilityTvKey1Pressed=" ); pw . println ( mAccessibilityTvKey1Pressed );
pw . print ( prefix );
pw . print ( "mAccessibilityTvKey2Pressed=" ); pw . println ( mAccessibilityTvKey2Pressed );
pw . print ( prefix );
pw . print ( "mAccessibilityTvScheduled=" ); pw . println ( mAccessibilityTvScheduled );
}
mGlobalKeyManager . dump ( prefix , pw );
mStatusBarController . dump ( pw , prefix );
mNavigationBarController . dump ( pw , prefix );
PolicyControl . dump ( prefix , pw );
if ( mWakeGestureListener != null ) {
mWakeGestureListener . dump ( pw , prefix );
}
if ( mOrientationListener != null ) {
mOrientationListener . dump ( pw , prefix );
}
if ( mBurnInProtectionHelper != null ) {
mBurnInProtectionHelper . dump ( prefix , pw );
}
if ( mKeyguardDelegate != null ) {
mKeyguardDelegate . dump ( prefix , pw );
}
pw . print ( prefix ); pw . println ( "Looper state:" );
mHandler . getLooper (). dump ( new PrintWriterPrinter ( pw ), prefix + " " );
}
}
RootWindowContainer
class RootWindowContainer extends WindowContainer < DisplayContent > {
void dumpTokens ( PrintWriter pw , boolean dumpAll ) {
pw . println ( " All tokens:" );
for ( int i = mChildren . size () - 1 ; i >= 0 ; -- i ) {
mChildren . get ( i ). dumpTokens ( pw , dumpAll );
}
}
void dumpWindowsNoHeader ( PrintWriter pw , boolean dumpAll , ArrayList < WindowState > windows ) {
final int [] index = new int [ 1 ];
forAllWindows (( w ) -> {
if ( windows == null || windows . contains ( w )) {
pw . println ( " Window #" + index [ 0 ] + " " + w + ":" );
w . dump ( pw , " " , dumpAll || windows != null );
index [ 0 ] = index [ 0 ] + 1 ;
}
}, true /* traverseTopToBottom */ );
}
}
WindowState
/** A window in the window manager. */
class WindowState extends WindowContainer < WindowState > implements WindowManagerPolicy . WindowState {
@Override
void dump ( PrintWriter pw , String prefix , boolean dumpAll ) {
final TaskStack stack = getStack ();
pw . print ( prefix ); pw . print ( "mDisplayId=" ); pw . print ( getDisplayId ());
if ( stack != null ) {
pw . print ( " stackId=" ); pw . print ( stack . mStackId );
}
pw . print ( " mSession=" ); pw . print ( mSession );
pw . print ( " mClient=" ); pw . println ( mClient . asBinder ());
pw . print ( prefix ); pw . print ( "mOwnerUid=" ); pw . print ( mOwnerUid );
pw . print ( " mShowToOwnerOnly=" ); pw . print ( mShowToOwnerOnly );
pw . print ( " package=" ); pw . print ( mAttrs . packageName );
pw . print ( " appop=" ); pw . println ( AppOpsManager . opToName ( mAppOp ));
pw . print ( prefix ); pw . print ( "mAttrs=" ); pw . println ( mAttrs . toString ( prefix ));
pw . print ( prefix ); pw . print ( "Requested w=" ); pw . print ( mRequestedWidth );
pw . print ( " h=" ); pw . print ( mRequestedHeight );
pw . print ( " mLayoutSeq=" ); pw . println ( mLayoutSeq );
if ( mRequestedWidth != mLastRequestedWidth || mRequestedHeight != mLastRequestedHeight ) {
pw . print ( prefix ); pw . print ( "LastRequested w=" ); pw . print ( mLastRequestedWidth );
pw . print ( " h=" ); pw . println ( mLastRequestedHeight );
}
if ( mIsChildWindow || mLayoutAttached ) {
pw . print ( prefix ); pw . print ( "mParentWindow=" ); pw . print ( getParentWindow ());
pw . print ( " mLayoutAttached=" ); pw . println ( mLayoutAttached );
}
if ( mIsImWindow || mIsWallpaper || mIsFloatingLayer ) {
pw . print ( prefix ); pw . print ( "mIsImWindow=" ); pw . print ( mIsImWindow );
pw . print ( " mIsWallpaper=" ); pw . print ( mIsWallpaper );
pw . print ( " mIsFloatingLayer=" ); pw . print ( mIsFloatingLayer );
pw . print ( " mWallpaperVisible=" ); pw . println ( mWallpaperVisible );
}
if ( dumpAll ) {
pw . print ( prefix ); pw . print ( "mBaseLayer=" ); pw . print ( mBaseLayer );
pw . print ( " mSubLayer=" ); pw . print ( mSubLayer );
pw . print ( " mAnimLayer=" ); pw . print ( mLayer ); pw . print ( "+" );
pw . print ( "=" ); pw . print ( mWinAnimator . mAnimLayer );
pw . print ( " mLastLayer=" ); pw . println ( mWinAnimator . mLastLayer );
}
if ( dumpAll ) {
pw . print ( prefix ); pw . print ( "mToken=" ); pw . println ( mToken );
if ( mAppToken != null ) {
pw . print ( prefix ); pw . print ( "mAppToken=" ); pw . println ( mAppToken );
pw . print ( prefix ); pw . print ( " isAnimatingWithSavedSurface()=" );
pw . print ( " mAppDied=" ); pw . print ( mAppDied );
pw . print ( prefix ); pw . print ( "drawnStateEvaluated=" );
pw . print ( getDrawnStateEvaluated ());
pw . print ( prefix ); pw . print ( "mightAffectAllDrawn=" );
pw . println ( mightAffectAllDrawn ());
}
pw . print ( prefix ); pw . print ( "mViewVisibility=0x" );
pw . print ( Integer . toHexString ( mViewVisibility ));
pw . print ( " mHaveFrame=" ); pw . print ( mHaveFrame );
pw . print ( " mObscured=" ); pw . println ( mObscured );
pw . print ( prefix ); pw . print ( "mSeq=" ); pw . print ( mSeq );
pw . print ( " mSystemUiVisibility=0x" );
pw . println ( Integer . toHexString ( mSystemUiVisibility ));
}
if (! mPolicyVisibility || ! mPolicyVisibilityAfterAnim || ! mAppOpVisibility
|| isParentWindowHidden ()|| mPermanentlyHidden || mForceHideNonSystemOverlayWindow
|| mHiddenWhileSuspended ) {
pw . print ( prefix ); pw . print ( "mPolicyVisibility=" );
pw . print ( mPolicyVisibility );
pw . print ( " mPolicyVisibilityAfterAnim=" );
pw . print ( mPolicyVisibilityAfterAnim );
pw . print ( " mAppOpVisibility=" );
pw . print ( mAppOpVisibility );
pw . print ( " parentHidden=" ); pw . print ( isParentWindowHidden ());
pw . print ( " mPermanentlyHidden=" ); pw . print ( mPermanentlyHidden );
pw . print ( " mHiddenWhileSuspended=" ); pw . print ( mHiddenWhileSuspended );
pw . print ( " mForceHideNonSystemOverlayWindow=" ); pw . println (
mForceHideNonSystemOverlayWindow );
}
if (! mRelayoutCalled || mLayoutNeeded ) {
pw . print ( prefix ); pw . print ( "mRelayoutCalled=" ); pw . print ( mRelayoutCalled );
pw . print ( " mLayoutNeeded=" ); pw . println ( mLayoutNeeded );
}
if ( dumpAll ) {
pw . print ( prefix ); pw . print ( "mGivenContentInsets=" );
mGivenContentInsets . printShortString ( pw );
pw . print ( " mGivenVisibleInsets=" );
mGivenVisibleInsets . printShortString ( pw );
pw . println ();
if ( mTouchableInsets != 0 || mGivenInsetsPending ) {
pw . print ( prefix ); pw . print ( "mTouchableInsets=" ); pw . print ( mTouchableInsets );
pw . print ( " mGivenInsetsPending=" ); pw . println ( mGivenInsetsPending );
Region region = new Region ();
getTouchableRegion ( region );
pw . print ( prefix ); pw . print ( "touchable region=" ); pw . println ( region );
}
pw . print ( prefix ); pw . print ( "mFullConfiguration=" ); pw . println ( getConfiguration ());
pw . print ( prefix ); pw . print ( "mLastReportedConfiguration=" );
pw . println ( getLastReportedConfiguration ());
}
pw . print ( prefix ); pw . print ( "mHasSurface=" ); pw . print ( mHasSurface );
pw . print ( " isReadyForDisplay()=" ); pw . print ( isReadyForDisplay ());
pw . print ( " mWindowRemovalAllowed=" ); pw . println ( mWindowRemovalAllowed );
if ( dumpAll ) {
pw . print ( prefix ); pw . print ( "mFrame=" ); mFrame . printShortString ( pw );
pw . print ( " last=" ); mLastFrame . printShortString ( pw );
pw . println ();
}
if ( mEnforceSizeCompat ) {
pw . print ( prefix ); pw . print ( "mCompatFrame=" ); mCompatFrame . printShortString ( pw );
pw . println ();
}
if ( dumpAll ) {
pw . print ( prefix ); pw . print ( "Frames: containing=" );
mContainingFrame . printShortString ( pw );
pw . print ( " parent=" ); mParentFrame . printShortString ( pw );
pw . println ();
pw . print ( prefix ); pw . print ( " display=" ); mDisplayFrame . printShortString ( pw );
pw . print ( " overscan=" ); mOverscanFrame . printShortString ( pw );
pw . println ();
pw . print ( prefix ); pw . print ( " content=" ); mContentFrame . printShortString ( pw );
pw . print ( " visible=" ); mVisibleFrame . printShortString ( pw );
pw . println ();
pw . print ( prefix ); pw . print ( " decor=" ); mDecorFrame . printShortString ( pw );
pw . println ();
pw . print ( prefix ); pw . print ( " outset=" ); mOutsetFrame . printShortString ( pw );
pw . println ();
pw . print ( prefix ); pw . print ( "Cur insets: overscan=" );
mOverscanInsets . printShortString ( pw );
pw . print ( " content=" ); mContentInsets . printShortString ( pw );
pw . print ( " visible=" ); mVisibleInsets . printShortString ( pw );
pw . print ( " stable=" ); mStableInsets . printShortString ( pw );
pw . print ( " surface=" ); mAttrs . surfaceInsets . printShortString ( pw );
pw . print ( " outsets=" ); mOutsets . printShortString ( pw );
pw . print ( " cutout=" + mDisplayCutout . getDisplayCutout ());
pw . println ();
pw . print ( prefix ); pw . print ( "Lst insets: overscan=" );
mLastOverscanInsets . printShortString ( pw );
pw . print ( " content=" ); mLastContentInsets . printShortString ( pw );
pw . print ( " visible=" ); mLastVisibleInsets . printShortString ( pw );
pw . print ( " stable=" ); mLastStableInsets . printShortString ( pw );
pw . print ( " physical=" ); mLastOutsets . printShortString ( pw );
pw . print ( " outset=" ); mLastOutsets . printShortString ( pw );
pw . print ( " cutout=" + mLastDisplayCutout );
pw . println ();
}
super . dump ( pw , prefix , dumpAll );
pw . print ( prefix ); pw . print ( mWinAnimator ); pw . println ( ":" );
mWinAnimator . dump ( pw , prefix + " " , dumpAll );
if ( mAnimatingExit || mRemoveOnExit || mDestroying || mRemoved ) {
pw . print ( prefix ); pw . print ( "mAnimatingExit=" ); pw . print ( mAnimatingExit );
pw . print ( " mRemoveOnExit=" ); pw . print ( mRemoveOnExit );
pw . print ( " mDestroying=" ); pw . print ( mDestroying );
pw . print ( " mRemoved=" ); pw . println ( mRemoved );
}
if ( getOrientationChanging () || mAppFreezing || mReportOrientationChanged ) {
pw . print ( prefix ); pw . print ( "mOrientationChanging=" );
pw . print ( mOrientationChanging );
pw . print ( " configOrientationChanging=" );
pw . print ( getLastReportedConfiguration (). orientation
!= getConfiguration (). orientation );
pw . print ( " mAppFreezing=" ); pw . print ( mAppFreezing );
pw . print ( " mReportOrientationChanged=" ); pw . println ( mReportOrientationChanged );
}
if ( mLastFreezeDuration != 0 ) {
pw . print ( prefix ); pw . print ( "mLastFreezeDuration=" );
TimeUtils . formatDuration ( mLastFreezeDuration , pw ); pw . println ();
}
if ( mForceSeamlesslyRotate ) {
pw . print ( prefix ); pw . print ( "forceSeamlesslyRotate: pending=" );
if ( mPendingForcedSeamlessRotate != null ) {
mPendingForcedSeamlessRotate . dump ( pw );
} else {
pw . print ( "null" );
}
pw . print ( " finishedFrameNumber=" ); pw . print ( mFinishForcedSeamlessRotateFrameNumber );
pw . println ();
}
if ( mHScale != 1 || mVScale != 1 ) {
pw . print ( prefix ); pw . print ( "mHScale=" ); pw . print ( mHScale );
pw . print ( " mVScale=" ); pw . println ( mVScale );
}
if ( mWallpaperX != - 1 || mWallpaperY != - 1 ) {
pw . print ( prefix ); pw . print ( "mWallpaperX=" ); pw . print ( mWallpaperX );
pw . print ( " mWallpaperY=" ); pw . println ( mWallpaperY );
}
if ( mWallpaperXStep != - 1 || mWallpaperYStep != - 1 ) {
pw . print ( prefix ); pw . print ( "mWallpaperXStep=" ); pw . print ( mWallpaperXStep );
pw . print ( " mWallpaperYStep=" ); pw . println ( mWallpaperYStep );
}
if ( mWallpaperDisplayOffsetX != Integer . MIN_VALUE
|| mWallpaperDisplayOffsetY != Integer . MIN_VALUE ) {
pw . print ( prefix ); pw . print ( "mWallpaperDisplayOffsetX=" );
pw . print ( mWallpaperDisplayOffsetX );
pw . print ( " mWallpaperDisplayOffsetY=" );
pw . println ( mWallpaperDisplayOffsetY );
}
if ( mDrawLock != null ) {
pw . print ( prefix ); pw . println ( "mDrawLock=" + mDrawLock );
}
if ( isDragResizing ()) {
pw . print ( prefix ); pw . println ( "isDragResizing=" + isDragResizing ());
}
if ( computeDragResizing ()) {
pw . print ( prefix ); pw . println ( "computeDragResizing=" + computeDragResizing ());
}
pw . print ( prefix ); pw . println ( "isOnScreen=" + isOnScreen ());
pw . print ( prefix ); pw . println ( "isVisible=" + isVisible ());
}
}