public final class WindowContentFrameStats extends FrameStats implements Parcelable
FrameStats.getStartTimeNano()
to FrameStats.getEndTimeNano()
.
The key idea is that in order to provide a smooth user experience an application
has to draw a frame at a specific time interval obtained by calling FrameStats.getRefreshPeriodNano()
. If the application does not render a frame every refresh
period the user will see irregular UI transitions.
An application posts a frame for presentation by synchronously rendering its contents
in a buffer which is then posted or posting a buffer to which the application is
asychronously rendering the content via GL. After the frame is posted and rendered
(potentially asynchronosly) it is presented to the user. The time a frame was posted
can be obtained via getFramePostedTimeNano(int)
, the time a frame content
was rendered and ready for dsiplay (GL case) via getFrameReadyTimeNano(int)
,
and the time a frame was presented on the screen via FrameStats.getFramePresentedTimeNano(int)
.
Parcelable.ClassLoaderCreator<T>, Parcelable.Creator<T>
Modifier and Type | Field and Description |
---|---|
static Parcelable.Creator<WindowContentFrameStats> |
CREATOR |
mFramesPresentedTimeNano, mRefreshPeriodNano, UNDEFINED_TIME_NANO
CONTENTS_FILE_DESCRIPTOR, PARCELABLE_ELIDE_DUPLICATES, PARCELABLE_WRITE_RETURN_VALUE
Constructor and Description |
---|
WindowContentFrameStats() |
Modifier and Type | Method and Description |
---|---|
int |
describeContents()
Describe the kinds of special objects contained in this Parcelable
instance's marshaled representation.
|
long |
getFramePostedTimeNano(int index)
Get the time a frame at a given index was posted by the producer (e.g. the application).
|
long |
getFrameReadyTimeNano(int index)
Get the time a frame at a given index was ready for presentation.
|
void |
init(long refreshPeriodNano,
long[] framesPostedTimeNano,
long[] framesPresentedTimeNano,
long[] framesReadyTimeNano)
Initializes this isntance.
|
String |
toString()
Returns a string representation of the object.
|
void |
writeToParcel(Parcel parcel,
int flags)
Flatten this object in to a Parcel.
|
getEndTimeNano, getFrameCount, getFramePresentedTimeNano, getRefreshPeriodNano, getStartTimeNano
public static final Parcelable.Creator<WindowContentFrameStats> CREATOR
public void init(long refreshPeriodNano, long[] framesPostedTimeNano, long[] framesPresentedTimeNano, long[] framesReadyTimeNano)
refreshPeriodNano
- The display refresh period.framesPostedTimeNano
- The times in milliseconds for when the frame contents were posted.framesPresentedTimeNano
- The times in milliseconds for when the frame contents were presented.framesReadyTimeNano
- The times in milliseconds for when the frame contents were ready to be presented.public long getFramePostedTimeNano(int index)
Note: A frame can be posted and still it contents being rendered
asynchronously in GL. To get the time the frame content was completely rendered and
ready to display call getFrameReadyTimeNano(int)
.
index
- The frame index.public long getFrameReadyTimeNano(int index)
Note: A frame can be posted and still it contents being rendered asynchronously in GL. In such a case this is the time when the frame contents were completely rendered.
index
- The frame index.FrameStats.UNDEFINED_TIME_NANO
if the frame is not ready yet.public int describeContents()
Parcelable
Parcelable.writeToParcel(Parcel, int)
,
the return value of this method must include the
Parcelable.CONTENTS_FILE_DESCRIPTOR
bit.describeContents
in interface Parcelable
Parcelable.CONTENTS_FILE_DESCRIPTOR
public void writeToParcel(Parcel parcel, int flags)
Parcelable
writeToParcel
in interface Parcelable
parcel
- The Parcel in which the object should be written.flags
- Additional flags about how the object should be written.
May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE
.public String toString()
Object
toString
method returns a string that
"textually represents" this object. The result should
be a concise but informative representation that is easy for a
person to read.
It is recommended that all subclasses override this method.
The toString
method for class Object
returns a string consisting of the name of the class of which the
object is an instance, the at-sign character `@
', and
the unsigned hexadecimal representation of the hash code of the
object. In other words, this method returns a string equal to the
value of:
getClass().getName() + '@' + Integer.toHexString(hashCode())