Loading api/current.xml +48 −1 Original line number Diff line number Diff line Loading @@ -143541,6 +143541,21 @@ <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="dumpAsync" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="fd" type="java.io.FileDescriptor"> </parameter> <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="flushPendingCommands" return="void" abstract="false" Loading Loading @@ -148013,6 +148028,23 @@ <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="dumpAsync" return="void" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="fd" type="java.io.FileDescriptor"> </parameter> <parameter name="args" type="java.lang.String[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="getInterfaceDescriptor" return="java.lang.String" abstract="true" Loading Loading @@ -150367,6 +150399,21 @@ visibility="public" > </method> <method name="dup" return="android.os.ParcelFileDescriptor" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="orig" type="java.io.FileDescriptor"> </parameter> <exception name="IOException" type="java.io.IOException"> </exception> </method> <method name="fromSocket" return="android.os.ParcelFileDescriptor" abstract="false" Loading Loading @@ -267896,7 +267943,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="t" type="T"> <parameter name="arg0" type="T"> </parameter> </method> </interface> cmds/dumpstate/dumpstate.c +8 −3 Original line number Diff line number Diff line Loading @@ -185,11 +185,16 @@ static void dumpstate() { run_command("DUMPSYS", 60, "dumpsys", NULL); printf("========================================================\n"); printf("== Application Services\n"); printf("== Running Application Activities\n"); printf("========================================================\n"); /* Instead of a 60s timeout, we should give each service a 5 second timeout */ run_command("APP SERVICES", 60, "dumpsys", "activity", "service", NULL); run_command("APP ACTIVITIES", 30, "dumpsys", "activity", "all", NULL); printf("========================================================\n"); printf("== Running Application Services\n"); printf("========================================================\n"); run_command("APP SERVICES", 30, "dumpsys", "activity", "service", "all", NULL); } Loading core/java/android/app/ActivityThread.java +32 −53 Original line number Diff line number Diff line Loading @@ -363,11 +363,10 @@ public final class ActivityThread { } private static final class DumpComponentInfo { FileDescriptor fd; ParcelFileDescriptor fd; IBinder token; String prefix; String[] args; boolean dumped; } private static final class ResultData { Loading Loading @@ -621,20 +620,13 @@ public final class ActivityThread { public void dumpService(FileDescriptor fd, IBinder servicetoken, String[] args) { DumpComponentInfo data = new DumpComponentInfo(); data.fd = fd; try { data.fd = ParcelFileDescriptor.dup(fd); data.token = servicetoken; data.args = args; data.dumped = false; queueOrSendMessage(H.DUMP_SERVICE, data); synchronized (data) { while (!data.dumped) { try { data.wait(); } catch (InterruptedException e) { // no need to do anything here, we will keep waiting until // dumped is set } } } catch (IOException e) { Slog.w(TAG, "dumpService failed", e); } } Loading Loading @@ -696,21 +688,14 @@ public final class ActivityThread { public void dumpActivity(FileDescriptor fd, IBinder activitytoken, String prefix, String[] args) { DumpComponentInfo data = new DumpComponentInfo(); data.fd = fd; try { data.fd = ParcelFileDescriptor.dup(fd); data.token = activitytoken; data.prefix = prefix; data.args = args; data.dumped = false; queueOrSendMessage(H.DUMP_ACTIVITY, data); synchronized (data) { while (!data.dumped) { try { data.wait(); } catch (InterruptedException e) { // no need to do anything here, we will keep waiting until // dumped is set } } } catch (IOException e) { Slog.w(TAG, "dumpActivity failed", e); } } Loading Loading @@ -2113,33 +2098,27 @@ public final class ActivityThread { } private void handleDumpService(DumpComponentInfo info) { try { Service s = mServices.get(info.token); if (s != null) { PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd)); s.dump(info.fd, pw, info.args); pw.close(); } } finally { synchronized (info) { info.dumped = true; info.notifyAll(); PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd.getFileDescriptor())); s.dump(info.fd.getFileDescriptor(), pw, info.args); pw.flush(); try { info.fd.close(); } catch (IOException e) { } } } private void handleDumpActivity(DumpComponentInfo info) { try { ActivityClientRecord r = mActivities.get(info.token); if (r != null && r.activity != null) { PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd)); r.activity.dump(info.prefix, info.fd, pw, info.args); pw.close(); } } finally { synchronized (info) { info.dumped = true; info.notifyAll(); PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd.getFileDescriptor())); r.activity.dump(info.prefix, info.fd.getFileDescriptor(), pw, info.args); pw.flush(); try { info.fd.close(); } catch (IOException e) { } } } Loading core/java/android/app/ApplicationThreadNative.java +2 −2 Original line number Diff line number Diff line Loading @@ -822,7 +822,7 @@ class ApplicationThreadProxy implements IApplicationThread { data.writeFileDescriptor(fd); data.writeStrongBinder(token); data.writeStringArray(args); mRemote.transact(DUMP_SERVICE_TRANSACTION, data, null, 0); mRemote.transact(DUMP_SERVICE_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); data.recycle(); } Loading Loading @@ -944,7 +944,7 @@ class ApplicationThreadProxy implements IApplicationThread { data.writeStrongBinder(token); data.writeString(prefix); data.writeStringArray(args); mRemote.transact(DUMP_ACTIVITY_TRANSACTION, data, null, 0); mRemote.transact(DUMP_ACTIVITY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); data.recycle(); } Loading core/java/android/content/res/Configuration.java +94 −33 Original line number Diff line number Diff line Loading @@ -299,45 +299,106 @@ public final class Configuration implements Parcelable, Comparable<Configuration public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("{ scale="); sb.append("{ fnt="); sb.append(fontScale); sb.append(" imsi="); sb.append(mcc); sb.append("/"); sb.append(mnc); sb.append(" loc="); if (locale != null) { sb.append(" "); sb.append(locale); sb.append(" touch="); sb.append(touchscreen); sb.append(" keys="); sb.append(keyboard); sb.append("/"); sb.append(keyboardHidden); sb.append("/"); sb.append(hardKeyboardHidden); sb.append(" nav="); sb.append(navigation); sb.append("/"); sb.append(navigationHidden); sb.append(" orien="); } else { sb.append(" (no locale)"); } switch (touchscreen) { case TOUCHSCREEN_UNDEFINED: sb.append(" ?touch"); break; case TOUCHSCREEN_NOTOUCH: sb.append(" -touch"); break; case TOUCHSCREEN_STYLUS: sb.append(" stylus"); break; case TOUCHSCREEN_FINGER: sb.append(" finger"); break; default: sb.append(" touch="); sb.append(touchscreen); break; } switch (keyboard) { case KEYBOARD_UNDEFINED: sb.append(" ?keyb"); break; case KEYBOARD_NOKEYS: sb.append(" -keyb"); break; case KEYBOARD_QWERTY: sb.append(" qwerty"); break; case KEYBOARD_12KEY: sb.append(" 12key"); break; default: sb.append(" keys="); sb.append(keyboard); break; } switch (keyboardHidden) { case KEYBOARDHIDDEN_UNDEFINED: sb.append("/?"); break; case KEYBOARDHIDDEN_NO: sb.append("/v"); break; case KEYBOARDHIDDEN_YES: sb.append("/h"); break; case KEYBOARDHIDDEN_SOFT: sb.append("/s"); break; default: sb.append("/"); sb.append(keyboardHidden); break; } switch (hardKeyboardHidden) { case HARDKEYBOARDHIDDEN_UNDEFINED: sb.append("/?"); break; case HARDKEYBOARDHIDDEN_NO: sb.append("/v"); break; case HARDKEYBOARDHIDDEN_YES: sb.append("/h"); break; default: sb.append("/"); sb.append(hardKeyboardHidden); break; } switch (navigation) { case NAVIGATION_UNDEFINED: sb.append(" ?nav"); break; case NAVIGATION_NONAV: sb.append(" -nav"); break; case NAVIGATION_DPAD: sb.append(" dpad"); break; case NAVIGATION_TRACKBALL: sb.append(" tball"); break; case NAVIGATION_WHEEL: sb.append(" wheel"); break; default: sb.append(" nav="); sb.append(navigation); break; } switch (navigationHidden) { case NAVIGATIONHIDDEN_UNDEFINED: sb.append("/?"); break; case NAVIGATIONHIDDEN_NO: sb.append("/v"); break; case NAVIGATIONHIDDEN_YES: sb.append("/h"); break; default: sb.append("/"); sb.append(navigationHidden); break; } switch (orientation) { case ORIENTATION_LANDSCAPE: sb.append("L"); break; case ORIENTATION_PORTRAIT: sb.append("P"); break; default: sb.append(orientation); } sb.append(" layout=0x"); sb.append(java.lang.Integer.toHexString(screenLayout)); sb.append(" uiMode=0x"); sb.append(java.lang.Integer.toHexString(uiMode)); sb.append(" wdp="); sb.append(screenWidthDp); sb.append(" hdp="); sb.append(screenHeightDp); case ORIENTATION_UNDEFINED: sb.append(" ?orien"); break; case ORIENTATION_LANDSCAPE: sb.append(" land"); break; case ORIENTATION_PORTRAIT: sb.append(" port"); break; default: sb.append(" orien="); sb.append(orientation); break; } switch ((screenLayout&SCREENLAYOUT_SIZE_MASK)) { case SCREENLAYOUT_SIZE_UNDEFINED: sb.append(" ?lsize"); break; case SCREENLAYOUT_SIZE_SMALL: sb.append(" smll"); break; case SCREENLAYOUT_SIZE_NORMAL: sb.append(" nrml"); break; case SCREENLAYOUT_SIZE_LARGE: sb.append(" lrg"); break; case SCREENLAYOUT_SIZE_XLARGE: sb.append(" xlrg"); break; default: sb.append(" layoutSize="); sb.append(screenLayout&SCREENLAYOUT_SIZE_MASK); break; } switch ((screenLayout&SCREENLAYOUT_LONG_MASK)) { case SCREENLAYOUT_LONG_UNDEFINED: sb.append(" ?long"); break; case SCREENLAYOUT_LONG_NO: /* not-long is not interesting to print */ break; case SCREENLAYOUT_LONG_YES: sb.append(" long"); break; default: sb.append(" layoutLong="); sb.append(screenLayout&SCREENLAYOUT_LONG_MASK); break; } switch ((uiMode&UI_MODE_TYPE_MASK)) { case UI_MODE_TYPE_UNDEFINED: sb.append(" ?uimode"); break; case UI_MODE_TYPE_NORMAL: /* normal is not interesting to print */ break; case UI_MODE_TYPE_DESK: sb.append(" desk"); break; case UI_MODE_TYPE_CAR: sb.append(" car"); break; default: sb.append(" uimode="); sb.append(uiMode&UI_MODE_TYPE_MASK); break; } switch ((uiMode&UI_MODE_NIGHT_MASK)) { case UI_MODE_NIGHT_UNDEFINED: sb.append(" ?night"); break; case UI_MODE_NIGHT_NO: /* not-night is not interesting to print */ break; case UI_MODE_NIGHT_YES: sb.append(" night"); break; default: sb.append(" night="); sb.append(uiMode&UI_MODE_NIGHT_MASK); break; } if (screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED) { sb.append(" w"); sb.append(screenWidthDp); sb.append("dp"); } else { sb.append("?wdp"); } if (screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED) { sb.append(" h"); sb.append(screenHeightDp); sb.append("dp"); } else { sb.append("?hdp"); } if (seq != 0) { sb.append(" seq="); sb.append(" s."); sb.append(seq); } sb.append('}'); Loading Loading
api/current.xml +48 −1 Original line number Diff line number Diff line Loading @@ -143541,6 +143541,21 @@ <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="dumpAsync" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="fd" type="java.io.FileDescriptor"> </parameter> <parameter name="args" type="java.lang.String[]"> </parameter> </method> <method name="flushPendingCommands" return="void" abstract="false" Loading Loading @@ -148013,6 +148028,23 @@ <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="dumpAsync" return="void" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="fd" type="java.io.FileDescriptor"> </parameter> <parameter name="args" type="java.lang.String[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="getInterfaceDescriptor" return="java.lang.String" abstract="true" Loading Loading @@ -150367,6 +150399,21 @@ visibility="public" > </method> <method name="dup" return="android.os.ParcelFileDescriptor" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="orig" type="java.io.FileDescriptor"> </parameter> <exception name="IOException" type="java.io.IOException"> </exception> </method> <method name="fromSocket" return="android.os.ParcelFileDescriptor" abstract="false" Loading Loading @@ -267896,7 +267943,7 @@ deprecated="not deprecated" visibility="public" > <parameter name="t" type="T"> <parameter name="arg0" type="T"> </parameter> </method> </interface>
cmds/dumpstate/dumpstate.c +8 −3 Original line number Diff line number Diff line Loading @@ -185,11 +185,16 @@ static void dumpstate() { run_command("DUMPSYS", 60, "dumpsys", NULL); printf("========================================================\n"); printf("== Application Services\n"); printf("== Running Application Activities\n"); printf("========================================================\n"); /* Instead of a 60s timeout, we should give each service a 5 second timeout */ run_command("APP SERVICES", 60, "dumpsys", "activity", "service", NULL); run_command("APP ACTIVITIES", 30, "dumpsys", "activity", "all", NULL); printf("========================================================\n"); printf("== Running Application Services\n"); printf("========================================================\n"); run_command("APP SERVICES", 30, "dumpsys", "activity", "service", "all", NULL); } Loading
core/java/android/app/ActivityThread.java +32 −53 Original line number Diff line number Diff line Loading @@ -363,11 +363,10 @@ public final class ActivityThread { } private static final class DumpComponentInfo { FileDescriptor fd; ParcelFileDescriptor fd; IBinder token; String prefix; String[] args; boolean dumped; } private static final class ResultData { Loading Loading @@ -621,20 +620,13 @@ public final class ActivityThread { public void dumpService(FileDescriptor fd, IBinder servicetoken, String[] args) { DumpComponentInfo data = new DumpComponentInfo(); data.fd = fd; try { data.fd = ParcelFileDescriptor.dup(fd); data.token = servicetoken; data.args = args; data.dumped = false; queueOrSendMessage(H.DUMP_SERVICE, data); synchronized (data) { while (!data.dumped) { try { data.wait(); } catch (InterruptedException e) { // no need to do anything here, we will keep waiting until // dumped is set } } } catch (IOException e) { Slog.w(TAG, "dumpService failed", e); } } Loading Loading @@ -696,21 +688,14 @@ public final class ActivityThread { public void dumpActivity(FileDescriptor fd, IBinder activitytoken, String prefix, String[] args) { DumpComponentInfo data = new DumpComponentInfo(); data.fd = fd; try { data.fd = ParcelFileDescriptor.dup(fd); data.token = activitytoken; data.prefix = prefix; data.args = args; data.dumped = false; queueOrSendMessage(H.DUMP_ACTIVITY, data); synchronized (data) { while (!data.dumped) { try { data.wait(); } catch (InterruptedException e) { // no need to do anything here, we will keep waiting until // dumped is set } } } catch (IOException e) { Slog.w(TAG, "dumpActivity failed", e); } } Loading Loading @@ -2113,33 +2098,27 @@ public final class ActivityThread { } private void handleDumpService(DumpComponentInfo info) { try { Service s = mServices.get(info.token); if (s != null) { PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd)); s.dump(info.fd, pw, info.args); pw.close(); } } finally { synchronized (info) { info.dumped = true; info.notifyAll(); PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd.getFileDescriptor())); s.dump(info.fd.getFileDescriptor(), pw, info.args); pw.flush(); try { info.fd.close(); } catch (IOException e) { } } } private void handleDumpActivity(DumpComponentInfo info) { try { ActivityClientRecord r = mActivities.get(info.token); if (r != null && r.activity != null) { PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd)); r.activity.dump(info.prefix, info.fd, pw, info.args); pw.close(); } } finally { synchronized (info) { info.dumped = true; info.notifyAll(); PrintWriter pw = new PrintWriter(new FileOutputStream(info.fd.getFileDescriptor())); r.activity.dump(info.prefix, info.fd.getFileDescriptor(), pw, info.args); pw.flush(); try { info.fd.close(); } catch (IOException e) { } } } Loading
core/java/android/app/ApplicationThreadNative.java +2 −2 Original line number Diff line number Diff line Loading @@ -822,7 +822,7 @@ class ApplicationThreadProxy implements IApplicationThread { data.writeFileDescriptor(fd); data.writeStrongBinder(token); data.writeStringArray(args); mRemote.transact(DUMP_SERVICE_TRANSACTION, data, null, 0); mRemote.transact(DUMP_SERVICE_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); data.recycle(); } Loading Loading @@ -944,7 +944,7 @@ class ApplicationThreadProxy implements IApplicationThread { data.writeStrongBinder(token); data.writeString(prefix); data.writeStringArray(args); mRemote.transact(DUMP_ACTIVITY_TRANSACTION, data, null, 0); mRemote.transact(DUMP_ACTIVITY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY); data.recycle(); } Loading
core/java/android/content/res/Configuration.java +94 −33 Original line number Diff line number Diff line Loading @@ -299,45 +299,106 @@ public final class Configuration implements Parcelable, Comparable<Configuration public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("{ scale="); sb.append("{ fnt="); sb.append(fontScale); sb.append(" imsi="); sb.append(mcc); sb.append("/"); sb.append(mnc); sb.append(" loc="); if (locale != null) { sb.append(" "); sb.append(locale); sb.append(" touch="); sb.append(touchscreen); sb.append(" keys="); sb.append(keyboard); sb.append("/"); sb.append(keyboardHidden); sb.append("/"); sb.append(hardKeyboardHidden); sb.append(" nav="); sb.append(navigation); sb.append("/"); sb.append(navigationHidden); sb.append(" orien="); } else { sb.append(" (no locale)"); } switch (touchscreen) { case TOUCHSCREEN_UNDEFINED: sb.append(" ?touch"); break; case TOUCHSCREEN_NOTOUCH: sb.append(" -touch"); break; case TOUCHSCREEN_STYLUS: sb.append(" stylus"); break; case TOUCHSCREEN_FINGER: sb.append(" finger"); break; default: sb.append(" touch="); sb.append(touchscreen); break; } switch (keyboard) { case KEYBOARD_UNDEFINED: sb.append(" ?keyb"); break; case KEYBOARD_NOKEYS: sb.append(" -keyb"); break; case KEYBOARD_QWERTY: sb.append(" qwerty"); break; case KEYBOARD_12KEY: sb.append(" 12key"); break; default: sb.append(" keys="); sb.append(keyboard); break; } switch (keyboardHidden) { case KEYBOARDHIDDEN_UNDEFINED: sb.append("/?"); break; case KEYBOARDHIDDEN_NO: sb.append("/v"); break; case KEYBOARDHIDDEN_YES: sb.append("/h"); break; case KEYBOARDHIDDEN_SOFT: sb.append("/s"); break; default: sb.append("/"); sb.append(keyboardHidden); break; } switch (hardKeyboardHidden) { case HARDKEYBOARDHIDDEN_UNDEFINED: sb.append("/?"); break; case HARDKEYBOARDHIDDEN_NO: sb.append("/v"); break; case HARDKEYBOARDHIDDEN_YES: sb.append("/h"); break; default: sb.append("/"); sb.append(hardKeyboardHidden); break; } switch (navigation) { case NAVIGATION_UNDEFINED: sb.append(" ?nav"); break; case NAVIGATION_NONAV: sb.append(" -nav"); break; case NAVIGATION_DPAD: sb.append(" dpad"); break; case NAVIGATION_TRACKBALL: sb.append(" tball"); break; case NAVIGATION_WHEEL: sb.append(" wheel"); break; default: sb.append(" nav="); sb.append(navigation); break; } switch (navigationHidden) { case NAVIGATIONHIDDEN_UNDEFINED: sb.append("/?"); break; case NAVIGATIONHIDDEN_NO: sb.append("/v"); break; case NAVIGATIONHIDDEN_YES: sb.append("/h"); break; default: sb.append("/"); sb.append(navigationHidden); break; } switch (orientation) { case ORIENTATION_LANDSCAPE: sb.append("L"); break; case ORIENTATION_PORTRAIT: sb.append("P"); break; default: sb.append(orientation); } sb.append(" layout=0x"); sb.append(java.lang.Integer.toHexString(screenLayout)); sb.append(" uiMode=0x"); sb.append(java.lang.Integer.toHexString(uiMode)); sb.append(" wdp="); sb.append(screenWidthDp); sb.append(" hdp="); sb.append(screenHeightDp); case ORIENTATION_UNDEFINED: sb.append(" ?orien"); break; case ORIENTATION_LANDSCAPE: sb.append(" land"); break; case ORIENTATION_PORTRAIT: sb.append(" port"); break; default: sb.append(" orien="); sb.append(orientation); break; } switch ((screenLayout&SCREENLAYOUT_SIZE_MASK)) { case SCREENLAYOUT_SIZE_UNDEFINED: sb.append(" ?lsize"); break; case SCREENLAYOUT_SIZE_SMALL: sb.append(" smll"); break; case SCREENLAYOUT_SIZE_NORMAL: sb.append(" nrml"); break; case SCREENLAYOUT_SIZE_LARGE: sb.append(" lrg"); break; case SCREENLAYOUT_SIZE_XLARGE: sb.append(" xlrg"); break; default: sb.append(" layoutSize="); sb.append(screenLayout&SCREENLAYOUT_SIZE_MASK); break; } switch ((screenLayout&SCREENLAYOUT_LONG_MASK)) { case SCREENLAYOUT_LONG_UNDEFINED: sb.append(" ?long"); break; case SCREENLAYOUT_LONG_NO: /* not-long is not interesting to print */ break; case SCREENLAYOUT_LONG_YES: sb.append(" long"); break; default: sb.append(" layoutLong="); sb.append(screenLayout&SCREENLAYOUT_LONG_MASK); break; } switch ((uiMode&UI_MODE_TYPE_MASK)) { case UI_MODE_TYPE_UNDEFINED: sb.append(" ?uimode"); break; case UI_MODE_TYPE_NORMAL: /* normal is not interesting to print */ break; case UI_MODE_TYPE_DESK: sb.append(" desk"); break; case UI_MODE_TYPE_CAR: sb.append(" car"); break; default: sb.append(" uimode="); sb.append(uiMode&UI_MODE_TYPE_MASK); break; } switch ((uiMode&UI_MODE_NIGHT_MASK)) { case UI_MODE_NIGHT_UNDEFINED: sb.append(" ?night"); break; case UI_MODE_NIGHT_NO: /* not-night is not interesting to print */ break; case UI_MODE_NIGHT_YES: sb.append(" night"); break; default: sb.append(" night="); sb.append(uiMode&UI_MODE_NIGHT_MASK); break; } if (screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED) { sb.append(" w"); sb.append(screenWidthDp); sb.append("dp"); } else { sb.append("?wdp"); } if (screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED) { sb.append(" h"); sb.append(screenHeightDp); sb.append("dp"); } else { sb.append("?hdp"); } if (seq != 0) { sb.append(" seq="); sb.append(" s."); sb.append(seq); } sb.append('}'); Loading