Sudhindra Kovalam's Blog

My Geeky Blog

Posts Tagged ‘Pune User Group

Windows Phone 7 Process Life cycle

with 6 comments

What was made clear at Mix’10 was that third party apps in Windows Phone 7 wont be able to multi task. The reason provided was that too many apps running in the background may make the app in foreground run slowly. Once an user sees that s/he will definitely say that “Windows Phone 7 Sucks!, It is very slow and sluggish”.

Well what If we say that we will need multi tasking and will use it judiciously? well AFAIK, not Third party app multi tasking will be available in V1 ( Not sure , if MSFT intends to publish an OTA update to add multi tasking later )

With Windows phone 7, what MSFT promised was no  sluggish interfaces and apps that consume various data service and provide all the information you need in one place. And Frankly speaking off, they have done a decent job.

So, No Multi tasking, What does that mean for us developers?

Well in order to answer this question, we need to understand how an app will live on the phone ( the Windows Phone off course Open-mouthed smile )

When the app is Launched:

The app that you , me and many more developers will write will need to be launched from either the start experience or application list. When we do this, (from the programmer’s perspective) , a new instance of our application is created.  Well this does mean that we do get to write event handlers for events such as application launched etc..

However anywhere in the app, when the user presses the Start Button and/or triggers a Launcher or a chooser ( such as ‘”send an SMS” , “send an email”) etc, Your app’s state is saved and your app is put to sleep.

This process is called as “Tombstoning”

Wp7 App lifecycle

Following are the main events that we can use in our app to make our app feel as if it were really running in the background

1. Launching Event

When the app is launched, the Launching Event is fired. we can use this event, (usually an empty method pre written for you in app.xaml.cs) which we can use to instantiate stuff from the isolated storage. For e.g. , say you have an app that depends on some XML files that you need to read when the app launches, this is the event for you!, Write the code in the launching event

2. Closing Event

When the user clicks navigates through the app, a stack of page navigation is maintained. When the user hits the back button, the user is taken to previous screen.

Now when the user keep on hitting back button through the first page of the app. The app gets terminated and the closing event is fired. You can now write some app level data that you wish to persist, to the phone’s isolated storage.

3. Activated Event

Your app can be in the foreground or can be replaced with some app in foreground on some Launcher (such as send an email, call etc..). This is when the app is tombstoned and it also becomes possible that the app might not get activated again. The user can open many such apps,knocking off your app from the application stack ( the back button relies on the application stack to take you to a page in the current app or some page in previous app you had launched.) If the user were to launch the app from the start screen, it would create a new instance of the app

Now it is also possible that the user can reactivate your app by pressing the back button and coming to your app or even after the launcher completes. This is when your app is activated again. The Activated Event is fired when your app is activated after , say you complete a phone call when you were using the app . This is a good place where you can reload data you had stored in persistent store ( such as textbox data ,selected item etc . If you intend to store data entered in textboxes and you want to persist it )

4. Deactivated Event.

If an application is running and is subsequently replaced in the foreground by another application or experience, the first application will be deactivated. There are several ways in which this state can be invoked. An application will be deactivated if the user presses the Start button or if the device timeout causes the lock screen to be engaged. An application will also be deactivated when it invokes a Launcher or a Chooser, helper applications that allow the user to perform common tasks such as taking a picture or sending an email. In any of these cases, the running application will be deactivated and the Deactivated event is raised.

 

// Code to execute when the application is launching (e.g., from Start)

// This code will not execute when the application is reactivated

private void Application_Launching(object sender, LaunchingEventArgs e)
{
  //Get Data from Isolated Storage or a web service etc...
  System.Diagnostics.Debug.WriteLine("In Application_Launching event"+
     "... Nice Place to Initialize your app");
}

// Code to execute when the application is activated (brought to foreground)
// This code will not execute when the application is first launched
private void Application_Activated(object sender, ActivatedEventArgs e)
{
   System.Diagnostics.Debug.WriteLine("And We are back!!");
}

// Code to execute when the application is deactivated (sent to background)
// This code will not execute when the application is closing
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
   System.Diagnostics.Debug.WriteLine("Go to sleep...zzz");
}

// Code to execute when the application is closing (eg, user hit Back)
// This code will not execute when the application is deactivated
private void Application_Closing(object sender, ClosingEventArgs e)
{
   System.Diagnostics.Debug.WriteLine("goodbye cruel world.");
}

 

Hope this blog post helps you understand the Windows Phone 7 app lifecycle.

I will try and cover many more details in further posts as and how I discover them Smile

Thanks for your support. I will be back with my next post in a few days

Advertisements

Written by sudheerkovalam

July 21, 2010 at 4:20 pm

My Experiences in Windows Phone 7 Development :Part 2

leave a comment »

In Recently concluded Community tech days in pune, we had a sizable audience for Windows Phone 7 development session by Mayur Tendulkar. I was there in the crowd and must say, It was a good session on WP7 🙂

While the in the crowd  I did realize that Not  many have started WP7 development, But still, If you have done some development using April CTP and are probably itching to download the July Beta of the tool, Behold  There are some breaking changes.

Changes in the July Beta :

1. You Cannot now use the Bing maps control for silverlight in WP7 projects :

This my friends was very misleading  in the April CTP, You must have noticed that using the Bing Maps for SL , you could actually create apps on the phone that utilize, however  the performance would have been really bad, even on the emulator (it used to take around 4-6 min to load the map ).

The SL controls used to work on the April CTP due to a glitch in the, then released SDK.

2. The issue of needing to use unsigned versions of the dll that were signed using third party certificates has now been resolved

In the April CTP, you  could not use a signed DLL from a third party , as the emulator would not allow you to use these DLLs, You would have needed to unsign these DLLs to use ‘em in your WP7 project.  the Good news is that this has now been fixed in the July Beta. Now You can use the singed DLLs that you always wanted to use

3. Some of the assemblies have been merged into a single assembly:

One thing that you will probably notice is that once you open your April CTP project after you install the beta tools, the project compilation will result into a lot of errors. Most of these have got to do with the assembly mergers and deprecation of certain controls. A more detailed blog has been written by Jamie Rodriguez from Microsoft , where this is explained in much more detail (Link to Jamie’s Blog)

Upgrading to the July Beta:

I have  heard a lot of complaining about the setup experience on upgrading from April CTP to july Beta. What I’d Suggest ( the way which worked smoothly for around 5-6 PCs in my office) is to uninstall the CTP by hitting the uninstall option for Windows Phone Developer tools CTP in the add/remove programs. This will uninstalll all the components and ask for a reboot. After the reboot is done, we can now start the installation of the July beta SDK and tools.

Issue that I have observed :

One thing, you might notice is that whenever you do a DateTime.Now in your code and you are running this code in the emulator, the emulator will always return the install date and not the system date. If this is an issue that you are facing there is a workaround for this. Go to %ProgramData%\Microsoft\XDE and delete all files with .dess extension there (These are the state files, once these are deleted you will see the current date on the emulator, However time zone is set to Alaska GMT -9). So Once you start noticing the offset, delete the .dess file and you are back on time 🙂

 

Much more to come in the following blog posts… Keep reading and thanks for your support

Written by sudheerkovalam

July 18, 2010 at 5:53 pm

Techstart Grand Finale on December 21,2009

leave a comment »

About the Techstart Program
The Techstart program was conceived to address the unique situation that the Computer Science class of 2009 found itself in. Conceived by Dr. Anand Deshpande,(Founder, Chairman and Managing Director, Persistent Systems Ltd.) inspired by a similar highly successful experiment at Stanford, sponsored by Microsoft and supported by multiple organizations and individuals, Techstart was designed to provide these students with training on Windows Azure development, Microsoft’s cloud computing platform, through a community effort.
About 200 students brushed up on the basics of .NET development followed by over 8 weeks of intense training on the Windows Azure development platform from industry experts. The training culminated in a competition that showcased this newly acquired knowledge in the form of group projects hosted on Windows Azure.
Teams from these groups also participated in the national level Cloupdapp competition hosted by Microsoft India, One of the teams has won the first prize in the student category.

Please join us in applauding the students and volunteers that made this event a huge success and
for a technology-filled evening. To Know more visit : http://techstart.cloudapp.net

My experiences during the Program

Running this program was amazingly cool, It was fun, a great learning experience for the trainers as well as the participants.

We would take turns on who would teach what? (Teach as in , give the participants a brief overview of the concept, how it can be done, and a small sample demo (Usually the demos from the Windows azure training kit would suffice 🙂 )

We had provided them all reference stuff, Right from Windows 7 RC DVDs to Visual studio express editions, to the SDK and training kit. These were some very large downloads so, Courtesy PSL and MSFT, we arranged for some DVD sets which had all these installers.

In July 2009, There was a “swine flu” scare in the city, so we had to stop the program for some time but once we started again, every participant turned up enthusiastically to learn the technology.

I must applaud all the students/ participants of this program who have really shown keen interest in the technology, Their Curiosity/Interest in learning azure was so motivating that some one like me, who still has stage fright, managed to take a couple of sessions. in front of 150 people audience.(Thank you for helping me get rid of some of the stage fright i have. 🙂 )

Also the questions ,all of them asked used give us an opportunity to look deeper and even learn stuff which we might have missed out … (Thank you again 🙂 )

This program helped me meet some amazing people , who volunteered to take some training sessions in this program. I would like to thank them too. Some of them are:

  1. Matin sayed
  2. Mahesh Mitkari
  3. Mayur Tendulkar
  4. Brihadish Koushik
  5. Prasad Chitale
  6. Saranya Sriram and off course,
  7. Monish Darda (Who BTW is the event jockey on the 21st night 🙂 )

(I apologize if i have missed out some of the names)

An amazing Co ordination by Mr. Shekhar Sahasabudhe and Mr. Kaustubh Bhadbade, took care of the arrangements needed ,such as the venue etc. I would like to take this opportunity to thank every one in the admin team @ Bhagirath (who helped us with all stuff , like setting up the projector, mic. etc. and other such logistics)

And last but not the least (How Can i forget them!!), the duo from Microsoft

  1. Vikram Rajkondawar
  2. Mark D’Souza

who helped us a lot and also were a driving force in the program, right from providing us azure tokens on short notice to helping us iron out any difficulties we had… BTW when Mark and Vikram were here in Pune , for TechStart, they too delivered some amazing sessions and showed us some amazing Microsoft demos .(Many more awesome demos in the pipeline for the event. Be there to check ‘em  out, They will enthrall you 🙂 )

Thank you one and all for making this event a grand success….

And now time for some shameless publicity stunt:

The website is designed /developed by me (With the help of Ritesh, a friend of mine who developed a POC for me  ) 😀

Written by sudheerkovalam

December 17, 2009 at 1:17 am