Titanium模块 - 未调用生命周期事件

时间:2014-08-17 14:43:50

标签: module titanium appcelerator android-lifecycle

我正在为Android平台构建Titanium模块,我想使用模块的生命周期事件(即onDestroy,onPause等)。我尝试通过覆盖模块类中的这些生命周期事件来使用它们,如下所示:

@Kroll.module(name="custom", id="vub.ac.be.custom")
public class CustomModule extends KrollModule {
    private static final String TAG = "customModule";


    @Kroll.onAppCreate
    public static void onAppCreate(TiApplication app) {

    }

    private void destroyServices(){
        //...       
    }

    @Override
    public void onStop(Activity activity) {
        Log.d(TAG, "STOPPING");
        destroyServices();
        super.onStop(activity);
    }

    @Override
    public void onPause(Activity activity) {
        Log.d(TAG, "[MODULE LIFECYCLE EVENT] pause");
        super.onPause(activity);
    }

    @Override
    public void onResume(Activity activity) {       
        Log.d(TAG, "[MODULE LIFECYCLE EVENT] resume");  
        super.onResume(activity);
    }

    @Override
    public void onDestroy(Activity activity) {
        Log.d(TAG, "[MODULE LIFECYCLE EVENT] destroy");
        destroyService();
        super.onDestroy(activity);
    }
}

但是当我打开和关闭应用程序时,永远不会调用这些生命周期事件。有没有人知道如何使用它们,因为只有我可以使用它们,我才能构建我想要的模块。感谢

2 个答案:

答案 0 :(得分:2)

这可能是我的问题的根源:内联链接moddevguide

https://github.com/appcelerator/titanium_modules/blob/master/moddevguide/mobile/android/src/ti/moddevguide/ModdevguideModule.java

在第72行,他们描述了以下内容:

// Lifecycle

// NOTES:
//
// 1. Modules are created in the root context
// 2. Using navBarHidden (or fullscreen or modal) causes the window, when opened, to run in a new Android Activity. 
// 3. The root context/activity will be stopped when a new activity is launched
// 4. Lifecycle notifications will NOT be received while the root activity is stopped.

我在使用navBarHidden的应用程序中运行该模块,因此描述了一个新的android活动将被启动并且root活动被停止。每当根活动停止时,都会收到生命周期通知。谁能证实这一点,有人知道如何解决这个问题吗?感谢

答案 1 :(得分:0)

您使用的是哪个版本的SDK?在3.3.0生命周期回调中,无论导航栏是否隐藏,都会调用它。