此课程的Android documentation有些令人困惑。据我所知,到目前为止,我已经得出结论
OnResume/OnPause
对事件。OnStart/OnStop
个事件对。 Visible != Foreground
因为后者意味着互动性。如果这种理解是正确的,那么我觉得事件名称非常缺乏。 OnStart/OnStop
被称为OnVisible/OnInVisible
会更好。 OnResume/OnPause
被称为OnInteractive/OnPassive
会更好。
这如何与Cordova应用程序中可用的Window.OnPause / OnResume方法相关联?我的假设是他们映射到相应的Android活动生命周期事件。
基于这种理解,我假设
我使用这种理解来创建以下类作为我的自定义Cordova插件的一部分
import android.app.Activity;
import android.app.Application.ActivityLifecycleCallbacks;
import android.os.Bundle;
public class StateMonitor implements ActivityLifecycleCallbacks
{
public static int isVisible = 0;
public static int isInFG = 0;
public static boolean isAppInForeground()
{Feedback.postBackInfo("In FG:" + isInFG);return isInFG > 0;}
public static boolean isAppVisible(){return isVisible > 0;}
public void onActivityCreated(Activity activity,Bundle bundle){}
public void onActivityDestroyed(Activity activity){}
public void onActivityResumed(Activity activity)
{
isInFG++;
Feedback.postBackInfo("Resumed:" + isInFG);
}
public void onActivityPaused(Activity activity)
{
isInFG--;
Feedback.postBackInfo("Paused");
}
public void onActivitySaveInstanceState(Activity activity,Bundle outState)
{}
public void onActivityStarted(Activity activity)
{Feedback.postBackInfo("started");isVisible++;}
public void onActivityStopped(Activity activity){isVisible--;}
}
我通过发布
开始监控活动生命周期事件cordova.getActivity().getApplication().
registerActivityLifecycleCallbacks(new StateMonitor());
其中Feedback
是我在插件内部使用的帮助程序类,用于将消息回发到我的服务器以便在我的Web浏览器中实时记录和显示。
来自
public void initialize(CordovaInterface cordova, CordovaWebView webView)
插件的方法。这立即引发了一个问题:
registerActivityLifecycleCallbacks
打电话的时间太短了#34;监控最初的OnStart / OnResume事件,从那时起进行调用 - 来自Plugin.initialize
- 这些事件已经发生"已经发生"。对于之前来过这里的任何人,我都非常感激,他们可以发表评论并提供解决方案。
答案 0 :(得分:0)
我发现可以使其工作的唯一方法是在Cordova app中的MainActivity中添加此类。它会在你的插件之外。 没有其他工作。