Java 类android.support.test.runner.lifecycle.ActivityLifecycleCallback 实例源码

项目:Robolectric-Instrumentation    文件:ActivityLifecycleMonitorImpl.java   
@Override
public void addLifecycleCallback(ActivityLifecycleCallback callback) {
    // there will never be too many callbacks, so iterating over a list will probably
    // be faster then the constant time costs of setting up and maintaining a map.
    checkNotNull(callback);

    synchronized (mCallbacks) {
        boolean needsAdd = true;
        Iterator<WeakReference<ActivityLifecycleCallback>> refIter = mCallbacks.iterator();
        while (refIter.hasNext()) {
            ActivityLifecycleCallback storedCallback = refIter.next().get();
            if (null == storedCallback) {
                refIter.remove();
            } else if (storedCallback == callback) {
                needsAdd = false;
            }
        }
        if (needsAdd) {
            mCallbacks.add(new WeakReference<ActivityLifecycleCallback>(callback));
        }
    }
}
项目:Robolectric-Instrumentation    文件:ActivityLifecycleMonitorImpl.java   
@Override
public void removeLifecycleCallback(ActivityLifecycleCallback callback) {
    checkNotNull(callback);

    synchronized (mCallbacks) {
        Iterator<WeakReference<ActivityLifecycleCallback>> refIter = mCallbacks.iterator();
        while (refIter.hasNext()) {
            ActivityLifecycleCallback storedCallback = refIter.next().get();
            if (null == storedCallback) {
                refIter.remove();
            } else if (storedCallback == callback) {
                refIter.remove();
            }
        }
    }
}
项目:Robolectric-Instrumentation    文件:ActivityLifecycleMonitorImpl.java   
@Override
public void addLifecycleCallback(ActivityLifecycleCallback callback) {
    // there will never be too many callbacks, so iterating over a list will probably
    // be faster then the constant time costs of setting up and maintaining a map.
    checkNotNull(callback);

    synchronized (mCallbacks) {
        boolean needsAdd = true;
        Iterator<WeakReference<ActivityLifecycleCallback>> refIter = mCallbacks.iterator();
        while (refIter.hasNext()) {
            ActivityLifecycleCallback storedCallback = refIter.next().get();
            if (null == storedCallback) {
                refIter.remove();
            } else if (storedCallback == callback) {
                needsAdd = false;
            }
        }
        if (needsAdd) {
            mCallbacks.add(new WeakReference<ActivityLifecycleCallback>(callback));
        }
    }
}
项目:Robolectric-Instrumentation    文件:ActivityLifecycleMonitorImpl.java   
@Override
public void removeLifecycleCallback(ActivityLifecycleCallback callback) {
    checkNotNull(callback);

    synchronized (mCallbacks) {
        Iterator<WeakReference<ActivityLifecycleCallback>> refIter = mCallbacks.iterator();
        while (refIter.hasNext()) {
            ActivityLifecycleCallback storedCallback = refIter.next().get();
            if (null == storedCallback) {
                refIter.remove();
            } else if (storedCallback == callback) {
                refIter.remove();
            }
        }
    }
}
项目:bluesnap-android-int    文件:EspressoBasedTest.java   
public void wakeUpDeviceScreen() throws RemoteException {
    UiDevice uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
    uiDevice.wakeUp();
    ActivityLifecycleMonitorRegistry.getInstance().addLifecycleCallback(new ActivityLifecycleCallback() {
        @Override
        public void onActivityLifecycleChanged(Activity activity, Stage stage) {
            //if (stage == Stage.PRE_ON_CREATE) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
            // }
        }
    });
}
项目:mvp-core    文件:ActivityLifecycleTestRule.java   
public void finishCurrentActivity() {
    if (mActivity != null) {
        final Object lock = new Object();

        final ActivityLifecycleCallback callback = new ActivityLifecycleCallback()
        {
            @Override
            public void onActivityLifecycleChanged(Activity activity, Stage stage)
            {
                if( activity == mActivity && stage == Stage.DESTROYED )
                {
                    mActivity = null;
                    afterActivityFinished();

                    ActivityLifecycleMonitorRegistry.getInstance().removeLifecycleCallback(this);

                    synchronized (lock)
                    {
                        lock.notifyAll();
                    }
                }
            }
        };
        ActivityLifecycleMonitorRegistry.getInstance().addLifecycleCallback(callback);

        mInstrumentation.runOnMainSync(new Runnable()
        {
            @Override
            public void run()
            {
                mActivity.finish();
            }
        });

        synchronized (lock)
        {
            try
            {
                lock.wait(10000);
            }
            catch (InterruptedException ignored)
            {
                throw new RuntimeException("finishCurrentActivity timed out after 10s");
            }
        }
    }
}
项目:Robolectric-Instrumentation    文件:ActivityLifecycleMonitorImpl.java   
/**
 * Called by the runner after a particular onXXX lifecycle method has been called on a given
 * activity.
 */
public void signalLifecycleChange(Stage stage, Activity activity) {
    // there are never too many activities in existence in an application - so we keep
    // track of everything in a single list.
    Log.d(TAG, "Lifecycle status change: " + activity + " in: " + stage);

    boolean needsAdd = true;
    Iterator<ActivityStatus> statusIterator = mActivityStatuses.iterator();
    while (statusIterator.hasNext()) {
        ActivityStatus status = statusIterator.next();
        Activity statusActivity = status.mActivityRef.get();
        if (null == statusActivity) {
            statusIterator.remove();
        } else if (activity == statusActivity) {
            needsAdd = false;
            status.mLifecycleStage = stage;
        }
    }

    if (needsAdd) {
        mActivityStatuses.add(new ActivityStatus(activity, stage));
    }

    synchronized (mCallbacks) {
        Iterator<WeakReference<ActivityLifecycleCallback>> refIter = mCallbacks.iterator();
        while (refIter.hasNext()) {
            ActivityLifecycleCallback callback = refIter.next().get();
            if (null == callback) {
                refIter.remove();
            } else {
                try {
                    Log.d(TAG, "running callback: " + callback);
                    callback.onActivityLifecycleChanged(activity, stage);
                    Log.d(TAG, "callback completes: " + callback);
                } catch (RuntimeException re) {
                    Log.e(TAG, String.format(
                                    "Callback threw exception! (callback: %s activity: %s stage: %s)",
                                    callback,
                                    activity,
                                    stage),
                            re);
                }
            }
        }
    }
}
项目:Robolectric-Instrumentation    文件:ActivityLifecycleMonitorImpl.java   
/**
 * Called by the runner after a particular onXXX lifecycle method has been called on a given
 * activity.
 */
public void signalLifecycleChange(Stage stage, Activity activity) {
    // there are never too many activities in existence in an application - so we keep
    // track of everything in a single list.
    Log.d(TAG, "Lifecycle status change: " + activity + " in: " + stage);

    boolean needsAdd = true;
    Iterator<ActivityStatus> statusIterator = mActivityStatuses.iterator();
    while (statusIterator.hasNext()) {
        ActivityStatus status = statusIterator.next();
        Activity statusActivity = status.mActivityRef.get();
        if (null == statusActivity) {
            statusIterator.remove();
        } else if (activity == statusActivity) {
            needsAdd = false;
            status.mLifecycleStage = stage;
        }
    }

    if (needsAdd) {
        mActivityStatuses.add(new ActivityStatus(activity, stage));
    }

    synchronized (mCallbacks) {
        Iterator<WeakReference<ActivityLifecycleCallback>> refIter = mCallbacks.iterator();
        while (refIter.hasNext()) {
            ActivityLifecycleCallback callback = refIter.next().get();
            if (null == callback) {
                refIter.remove();
            } else {
                try {
                    Log.d(TAG, "running callback: " + callback);
                    callback.onActivityLifecycleChanged(activity, stage);
                    Log.d(TAG, "callback completes: " + callback);
                } catch (RuntimeException re) {
                    Log.e(TAG, String.format(
                                    "Callback threw exception! (callback: %s activity: %s stage: %s)",
                                    callback,
                                    activity,
                                    stage),
                            re);
                }
            }
        }
    }
}