我正在编写一个Android代码段,以帮助跟踪Android事件作为应用程序开发人员的服务工具.
例如,主应用程序主体可以只显示"hello world".我的代码会听的应用程序事件,如onStart(),onResume(),onDestroy(),等,并保持跟踪这些事件.
当然,代码可以直接插入主活动下.但这意味着我的代码将遍布各个地方.有没有办法,我可以创建一个对象(即一个监听器),并且只请求app开发人员添加1~2个衬垫来使用我的代码?
Com*_*are 19
对于API等级14及更高版本,您可以拨打registerActivityLifecycleCallbacks()上Application建立一个监听器有关的活动生命周期事件予以通报.
试试这个方法
public class mYApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new MyLifecycleHandler());
}
}
Run Code Online (Sandbox Code Playgroud)
我的生命周期处理器:
public class MyLifecycleHandler implements Application.ActivityLifecycleCallbacks {
private static int resumed;
private static int paused;
private static int started;
private static int stopped;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
++resumed;
}
@Override
public void onActivityPaused(Activity activity) {
++paused;
android.util.Log.w("test", "application is in foreground: " + (resumed > paused));
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityStarted(Activity activity) {
++started;
}
@Override
public void onActivityStopped(Activity activity) {
++stopped;
android.util.Log.w("test", "application is visible: " + (started > stopped));
}
public static boolean isApplicationVisible() {
return started > stopped;
}
public static boolean isApplicationInForeground() {
return resumed > paused;
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用 isApplicationInForeground静态方法检查应用程序是在前台还是后台