App Events

There are a few functions that are triggered when certain system events occur.

They are

Function Called when
OnStart() application is created
OnMenu( name ) user selects a menu item
OnBack() the back key is pressed but only if it follows app.EnableBackKey( false );
OnPause() application is paused. (eg. When user switches to home screen)
OnResume() application is resumed. (eg. When user returns from home screen)
OnConfig() configuration changes. (eg. When user rotates phone)
OnAlarm() an alarm previously set by app.SetAlarm() is triggered
OnData() data sent by Android Intents

The code of the sample that is bundled with DroidScript is reproduced below without permission. Hope you don't mind, guys.

appEvents.js
//Called when application is created.
function OnStart()
{       
	app.ShowPopup( "OnStart" );
	app.SetMenu( "MyMenu1,MyMenu2" );
	app.EnableBackKey( false );
 
        //Get current time in milliseconds. 
        var now = new Date().getTime(); 
        //Set alarm for 3 seconds time. 
        app.SetAlarm( "Set", 1234, OnAlarm, now + 3000 ); }
 
//Called when user selects a menu item.
function OnMenu( name )
{        		
	app.ShowPopup( "OnMenu( " + name + " )" );
}
 
//Called when the back key is pressed.
function OnBack() 
{              
	alert( "OnBack" );   
	app.Exit();
}
 
//Called when application is paused.
//(eg. When user switches to home screen)
function OnPause() 
{ 
	app.ShowPopup( "OnPause" );
}
 
//Called when application is resumed.
//(eg. When user returns from home screen)
function OnResume() 
{ 
	app.ShowPopup( "OnResume" );
}
 
//Called when configuration changes.
//(eg. When user rotates phone)
function OnConfig() 
{              
	app.ShowPopup( "OnConfig" );    
}
 
//Called when alarm is triggered. 
//(Even if your app is closed) 
function OnAlarm( id ) 
{ 
    app.ShowPopup( "Got Alarm: id = " + id ); 
} 
 
//Handle data sent from other apps.
function OnData( isStartUp )
{
   	//Display intent data.
	var intent = app.GetIntent();
	if( intent )
	{
            //Extract main data.
            var s = "action: " + intent.action + "\n";
            s += "type: " + intent.type + "\n";
            s += "data: " + intent.data + "\n\n";
 
            //Extract extras.
            s += "extras:\n";
            for( var key in intent.extras ) 
                s += key+": "+intent.extras[key] + "\n";
 
            app.Alert( s, "OnData" ); 
	}
}

OnConfig

The following code can be useful if you want to change the layout in the OnConfig event.

//Called when application is started.
function OnStart()
{
  //Create a layout with objects vertically centered.
  lay = app.CreateLayout( "linear", "VCenter,FillXY" );  
  var test = app.GetOrientation();
  var hv = "Vertical";
  if( test=="Landscape") hv= "Horizontal";
  lay.SetOrientation( hv );
 
  txt = app.CreateText( "Hello " );
  txt.SetTextSize( 64);
  lay.AddChild( txt );
 
  txt1 = app.CreateText( "Goodbye" );
  txt1.SetTextSize( 64 );
  lay.AddChild( txt1 );
  app.AddLayout( lay );
}
//Called when screen rotates
function OnConfig()
{
  var test = app.GetOrientation();
  var hv = "Vertical";
  if( test=="Landscape") hv= "Horizontal";
  lay.SetOrientation( hv );
}