Show Menu

Udacity / Google Developing Android Apps Cheat Sheet by

Developing Android Apps

Shared Prefer­ences

Reading From Shared Prefer­ences:

Gets a Shared­Pre­fer­ences instance that points to the default file that is used by the preference framework in the given context.

Gets a specific Shared­Pre­fer­ences instance by name in case you have more than one preference in the same context.

Note that there is no type checking, so if you ask shared prefer­ences for a type that is different from what is actually stored in that key, the app will crash.
Implem­enting OnShar­edP­ref­ere­nce­Cha­nge­Lis­tener
public class MyClass extends Extend­edClass implements
  SharedPreferences.OnSharedPreferenceChangeListener { ...

Error Levels

Error (Remains in release versions)
Warning (Remains in release versions)
Info (Remains in release versions)
Debug (Not in release versions)
Verbose (Not in release versions)


Add Permissions to AndroidManifest.xml

<uses-permission android:name=”android.permission.XXXXXXXXX”>


A Simple Way to Launch URL in Browser

// In mainif­est.xml ------­---­---­---­---­---­---­-----

<us­es-­per­mission androi­d:n­ame­="an­dro­id.p­er­mis­sio­n.I­NTE­RNE­T"/>

// Imports ------­---­---­---­---­---­---­---­---­---­------

import androi­d.a­pp.A­ct­ivity;

import androi­d.c­ont­ent.In­tent;

import androi­d.n­et.Uri;

import androi­d.o­s.B­undle;

import androi­d.v­iew.Wi­ndow;

** The block below will not allow more than 500 characters and the formatting tags caused it to go over. If you cut and paste this code, use auto-f­ormat (Alt-L in intelliJ or AS) to format it properly. If you use another IDE, consult your setup or help file to find the auto-f­ormat hotkey.
// The code  ------­---­---­---­---­---­---­---­---­---­------

public class MainAc­tivity extends Activity {


protected void onCrea­te(­Bundle savedI­nst­anc­eState) {




Intent browse­rIntent = new Intent­(In­ten­t.A­CTI­ON_­VIEW,­rse­("ht­tp:­//w­ww.g­oo­­m"));





To create a loader:
1) Auto-i­mport the Loader class as you type, Then, have the IDE fill in the Loader Callbacks for you:

2) Create an integer constant for a loader ID:

private static final int myLoad­erName = 20;
3) Initialize the loader with the Loader Manager


The Shared­Pre­ference class saves key-value pairs of prefer­ences.
The Prefer­enc­eFr­agment subclass was specif­ically designed to display prefer­ences and has replaced the now depricated Preference Activity.
Preference Fragements populate themselves with data that's defined in an XML document. The XML is used to generate UI widgets in the fragment.
When the user updates prefer­ences in the widget, these changes are automa­tically updated in the Shared­Pre­fer­ences file.

Recycler View

Layout Manager > RECYCLER VIEW < View Holder < Adapter < Data
"­Whereas the View Holder determines how an individual entry is displayed, the Layout Manager determines how the entire collection of entries is displa­yed."
"­Layout Manager is a key part of the way recycling works in Recycler View since it determines when to recycle views that are no longer visible to the user."

Recycl­erView Adapter:

An adaper is called by Recycler View to:
Create new items in the form of ViewHo­lders
Populate (or bind) items with data
Return inform­ation abou the data (IE # of items)
The Adapter requires 3 functions to be overri­dden:
OnCrea­teV­iew­Hol­der() : Called when Recycl­erView instan­tiates a new ViewHolder instance (inflates from XML or generates it in code)
OnBind­Vie­wHo­lder() : Called when Recycl­erView wants to populate ViewHolder with data
GetIte­mCo­unt() : Returns the number of items in teh data source. (This might be called a number of times during the layout process so it needs to be a fast, efficient process.)

Recycler View Layout Manager

"­Wh­­ereas the View Holder determines how an individual entry is displayed, the Layout Manager determines how the entire collection of entries is displa­­ye­d."
"­Layout Manager is a key part of the way recycling works in Recycler View since it determines when to recycle views that are no longer visible to the user."
There are 3 implem­ent­ations of Layout Manager:
Linear­Lay­out­Manager allows for vertical or horizontal scrolling. Vertical is the default.
GridLa­you­tMa­nager is a subclass of Linear­Lay­out­Manager that is laid out in a grid and can scroll vertically or horizo­ntally.
Stagge­red­Gri­dLa­you­tMa­nager displays a offset grid of items. Commonly used for situations where the content is of varying diment­ions.
It is also possible to directly extend from Layout Manager and create your own.

Data Persis­tence

There are 5 different ways to persist data:
1) "­Saved Instance State" uses key-value pairs (a map) to save the state of one of your views. It's usually used to save state when the view must be quickly destroyed and restarted such as when the phone is rotated or if the activity has to be destroyed because of memory constr­aints but will need to be recreated at some point, when it returns to the foregr­ound. If the user quits the app or restarts the phone, this data is lost.
If you need to have data persist beyond app closures and phone restarts, it needs to be saved to a file system.
2) The Shared­Pre­fer­ences class saves simple key-value pairs (a map) to a file. Keys are always strings. values are primitives (as opposed to objects). This can be used for things like saving a String for the user name between sessions or the URL (as a String) of the last web page someone was on and returning to it when restarting the app.
3) For more complex data (IE: an object) we use a database, and Android uses SQL lite. Android also has various framework components (such as Content Providers) that allow you to manage and share data in databases.
4) For larger items (IE: audio, video, image or e-book files) you can save to internal or external storage.
5) We can also save larger files to a Cloud or Firebase, rather than taking up space in the device's storage.


No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          Programming Interview Live Coding Cheat Sheet