Details
-
Type:
Bug
-
Status: Closed
-
Priority:
High
-
Resolution: Done
-
Affects Version/s: Release 3.3.0
-
Fix Version/s: Release 4.1.0
-
Component/s: Android
-
Labels:
-
Environment:
Titanium SDK 3.3.0.GA
CLI version 3.3.0,
Titanium SDK version 3.2.3.GA, 3.3.0.GA
Android Device, Nexus 5 -Android 4.2 and Emulator.
Mac OS
-
Story Points:8
-
Sprint:2015 Sprint 12 SDK
Description
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:
@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);
|
}
|
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.
Steps to reproduce.
1. Download the module from this link
2. Create a titanium classic project
3. Paste this 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;
|
}
|
Steps to reproduce the issue with alloy (which is easier to reproduce)
1. Create a new alloy project
2. Paste this to index.js:
var mod = require('com.liferay.beacons');
|
$.label.text= "module is => " + mod + "and checkAvailability says: " + mod.checkAvailability();
|
function doClick(e) {
|
alert($.label.text);
|
}
|
|
$.index.open();
|
3. Run it in a device.
Attachments
Issue Links
- relates to
-
TIMOB-15443 Android: Allow full Activity lifecycle access for Titanium modules
-
- Closed
-