• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.layoutlib.bridge;
2 
3 import com.android.layoutlib.bridge.util.ChoreographerCallbacks;
4 import com.android.layoutlib.bridge.util.HandlerMessageQueue;
5 import com.android.tools.layoutlib.annotations.NotNull;
6 
7 import android.view.Choreographer_Delegate;
8 
9 import java.util.concurrent.atomic.AtomicLong;
10 
11 public class SessionInteractiveData {
12     private final HandlerMessageQueue mHandlerMessageQueue = new HandlerMessageQueue();
13     private final ChoreographerCallbacks mChoreographerCallbacks = new ChoreographerCallbacks();
14     // Current system time
15     private final AtomicLong mNanosTime = new AtomicLong(System.nanoTime());
16     private final AtomicLong mPreviousNanosTime = new AtomicLong(System.nanoTime());
17     // Time that the system booted up in nanos
18     private final AtomicLong mBootNanosTime = new AtomicLong(System.nanoTime());
19 
20     @NotNull
getHandlerMessageQueue()21     public HandlerMessageQueue getHandlerMessageQueue() {
22         return mHandlerMessageQueue;
23     }
24 
25     @NotNull
getChoreographerCallbacks()26     public ChoreographerCallbacks getChoreographerCallbacks() { return mChoreographerCallbacks; }
27 
setNanosTime(long nanos)28     public void setNanosTime(long nanos) {
29         mPreviousNanosTime.set(mNanosTime.get());
30         mNanosTime.set(nanos);
31     }
32 
getNanosTime()33     public long getNanosTime() {
34         return mNanosTime.get() - mPreviousNanosTime.get()
35                 + Choreographer_Delegate.sChoreographerTime;
36     }
37 
setBootNanosTime(long nanos)38     public void setBootNanosTime(long nanos) {
39         mBootNanosTime.set(nanos);
40     }
41 
getBootNanosTime()42     public long getBootNanosTime() {
43         return mBootNanosTime.get();
44     }
45 
dispose()46     public void dispose() {
47         mHandlerMessageQueue.clear();
48         mChoreographerCallbacks.clear();
49     }
50 }
51