Message logging
display levels
Error
War
Info
Debug
Verbose
```java
Log.x(String TAG, String message);
```
```java
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:icon="@drawable/ic_new_game"
android:title="@string/new_game"
android:showAsAction="ifRoom"/>
<item android:id="@+id/help"
android:icon="@drawable/ic_help"
android:title="@string/help" />
</menu>
```
```java
final static String GITHUB_BASE_URL = "https://api.github.com/search/repositories";
final static String PARAM_QUERY = "q";
final static String PARAM_SORT = "sort";
```
## Uri.Builder
```java
Uri builtUri = Uri.parse(GITHUB_BASE_URL)
.buildUpon()
.appendQueryParameter(PARAM_QUERY, githubSearchQuery)
.appendQueryParameter(PARAM_SORT, sortBy)
.build();
```
## Android Uri
```java
URL url = null;
try {
url = new URL(builtUri.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
```
AsyncTask
Allows you to run a task on a background thread,
while publishing results to the UI thread
onPostExecute
doInBackground
onProgressUpdate
onPreExecute
> `onPreExecute()`, invoked on the UI thread before the task is executed. This step is normally used to setup the task, for instance by showing a progress bar in the user interface.
> `doInBackground(Params...)`, invoked on the background thread immediately after `onPreExecute()` finishes executing. This step is used to perform background computation that can take a long time. The parameters of the asynchronous task are passed to this step. The result of the computation must be returned by this step and will be passed back to the last step. This step can also use `publishProgress(Progress...)` to publish one or more units of progress. These values are published on the UI thread, in the `onProgressUpdate(Progress...)` step.
> `onProgressUpdate(Progress...)`, invoked on the UI thread after a call to `publishProgress(Progress...)`. The timing of the execution is undefined. This method is used to display any form of progress in the user interface while the background computation is still executing. For instance, it can be used to animate a progress bar or show logs in a text field.
> `onPostExecute(Result)`, invoked on the UI thread after the background computation finishes. The result of the background computation is passed to this step as a parameter.
Java
Script
Object
Notation
```javascript
{
"name":"John",
"age":31,
"city":"New York",
"credit_cards":[
{
"number":"0000-0000-0000-0000"
},
{
"number":"0000-0000-0000-0001"
}
]
}
```
##### What would the following look like as JSON?
```
temp
min = 11.34
max = 19.01
weather
id = 801
condition = Clouds
description = few clouds
pressure = 1023.51
humidity = 87
```
```javascript
{
"temp":{
"min":11.34,
"max":19.01
},
"weather":{
"id":801,
"condition":"Clouds",
"description":"few clouds"
},
"pressure":1023.51,
"humidity":87
}
```
```java
JSONObject weatherCondition = new JSONObject(weatherDataJSONString);
// optString()
// Returns the value mapped by name if it exists,
// coercing it if necessary,
// or the empty string if no such mapping exists.
// Temp
JSONObject temp = weatherCondition.getJSONObject("temp");
String min = temp.optString("min");
String max = temp.optString("max");
```