Skip to main content

The basics of building an Android Application

The first thing that is important to understand as a developer is what really happens behind the scene when a user taps on an app icon. How does a developer gain access to the entry point of the application. For this post I will focus on the flow only. If you need to understand how to create your app then follow the simple instructions in this tutorial - Building your first App.

  1. Identify MAIN activity
    When an app launches, the Android OS first looks into AndroidManifest.xml file to identify the MAIN activity. It looks for an activity tag containing intent-filter with name android.intent.action.MAIN.
  2. Start the APP
    Once the MAIN activity class is known, it then creates a new instance and calls onCreate(Bundle savedInstanceState) method. This method is the entry point to the application.
  3. Show the APP
    This is typically done by specifying the elements that a developer wants to display in a layout file stored inside res/layout subdirectory. Android makes it easy to refer to this file by automatically creating a reference to this file in an auto-generated java class R. All layout files can be referenced by adding a prefix R.layout. followed by name of the layout file (typically same as name of the activity).  Developer can then instruct the OS to render it by invoking a method setContentView(R.layout.<layout_file_name>) .  

This is the bare minimal a developer needs to understand how an Android application is started and what gets displayed on phone.  You start building your app by adding logic to the onCreate() method and adding appropriate elements to the layout file. 

Comments

Popular posts from this blog

Creating no-reply@domain.com account in Postfix

If you wanted to send emails to users but did not want to receive any replies to the email, you would need to setup a no-reply@domain.com email account. These kind of email ids are useful when sending emails containing forgotten passwords or activation code. Below are the steps for creating such account in Postfix. 1. Identify the file containing alias for Postfix First, make sure the following line in the ALIAS DATABASE section of the /etc/postfix/main.cf is NOT commented out: alias_maps = hash:/etc/aliases 2. Create an alias that redirects messages to /dev/null Edit /etc/aliases and add following entry devnull: /dev/null 3. Create a virtual email id Edit /etc/postfix/virtual and add following entry no-reply@domain.com devnull 4. refresh postfix alias and postfix cache Execute following commands. (You may require root privileges) > newaliases > postfix reload

jupyter notebook execution error: "http://localhost:8889/tree?token=xxx" doesn’t understand the “open location” message

I got this error when I tried to launch jupyter notebook on a mac. It is not a fatal error. I could still go to browser directly and copy/paste the url manually. The error indicates that when the command automatically tried to launch a browser, it couldn't find the default browser in jupyter configuration file. The easy fix is to specify the browser. Here are the steps to do so; 1.   Open ~/.jupyter/jupyter_notebook_config.py in an editor.       If the file does not exist then you can create a default config file by typing the following command;       jupyter notebook --generate-config 2. Search for a word "browser" to locate a following line.     #c.NotebookApp.browser = ''     By default it is commented. You can uncomment it and use one of the following values depending on your browser preference.     # set default browser to chrome     c.NotebookApp.browser = 'chrome'     # set default browser to safari     c.NotebookApp.browser = 

.ssh/config: “Bad configuration option: UseKeychain” on Mac OS

After upgrading Mac OS to Mojave I started seeing this error when doing "git pull". I was able to follow the steps below as described here ; 1. open ssh config vi ~/.ssh/config 2. Add the following lines to ssh config to keep your configuration compatible with both new and old versions of openssh. IgnoreUnknown UseKeychain UseKeychain yes That fixed the issue for me. Try running git pull again.    More details about the issue are available here .