Project: titanium
Issue TIMOB-17747: Android: Native module onStart() lifecycle method never called for Alloy project
h4. Problem Description I have created a native module that has some code in an {{onStart()}} method - when importing this module in my alloy controller using {{require()}}, the {{onStart()}} method is called when the root activity is started when using Titanium SDK 3.2.3.GA, but when using 3.3.0, it is never called. I have properly declared the module in my {{tiapp.xml}} and my {{onStart()}} method is pretty simple: {noformat}	@Override	public void onStart(Activity activity)	{	// This method is called when the module is loaded and the root context is started	Log.d(TAG, "[MODULE LIFECYCLE EVENT] start");	super.onStart(activity);	} {noformat} In 3.2.3.GA I see the debug message in the {{logcat}} output - but using 3.3.0.GA I never see it (however I do see the {{onPause}} and {{onStop}} lifecycle methods are properly called. My native module depends on some initialization code in {{onStart}} that cannot be moved to {{onAppCreate}}, so it's currently failing as {{onStart}} is never called (nor is {{onPause}} which is a bit suspect). Also, for a non-Alloy app, this does not happen -- all of the lifecycle methods, including {{onStart}} are called as expected. h4. Steps to reproduce. 1. Download the module from this [link|https://github.com/jamesfalkner/liferay-android-beacons/blob/master/dist/com.liferay.beacons-android-0.1.zip] 2. Create a titanium classic project 3. Paste this code: {code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var label = Ti.UI.createLabel(); win.add(label); win.open(); if (Ti.Platform.name == "android") { var mod = require('com.liferay.beacons'); label.text = "module is => " + mod + "and checkAvailability says: " + mod.checkAvailability(); } else { label.text = "liferay.beacons not supported on " + Ti.Platform.name; } {code} h4. Steps to reproduce the issue with alloy (which is easier to reproduce) 1. Create a new alloy project 2. Paste this to index.js: {code} var mod = require('com.liferay.beacons'); $.label.text= "module is => " + mod + "and checkAvailability says: " + mod.checkAvailability(); function doClick(e) { alert($.label.text); } $.index.open(); {code} 3. Run it in a device.
Story points: 8