1 / 28

Programming the Android Platform

Application Fundamentals. Programming the Android Platform. Building an Application. See: developer.android.com/guide/developing/building/index.html. Running an Application. By default, each application: assigned a unique Linux user ID executes in its own Linux process

galen
Télécharger la présentation

Programming the Android Platform

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Application Fundamentals Programming the Android Platform

  2. Building an Application See: developer.android.com/guide/developing/building/index.html

  3. Running an Application • By default, each application: • assigned a unique Linux user ID • executes in its own Linux process • By default, each process runs its own virtual machine • Android manages process creation & shutdown • Starts process when any of the application's code needs to be executed • Shuts down when process is no longer needed and system resources are required by other applications

  4. Application Components • Apps can have multiple entry points • i.e., not just main() method • App comprise components that the system can instantiate and run as needed • Key component classes include: • Activities • Services • Broadcast receivers • Content providers

  5. Activity • Primary class for interacting with user • Usually implements a focused task • Usually Involves one screenful of data • Example: • Calculator

  6. Service • Runs in the background to perform long-running or remote operations • Does not have a visual user interface • Example • Music playing application

  7. Broadcast Receivers • Components that listen for broadcast announcements (events) • Events implemented as Intent instances • Does not have a visual user interface • Example • Alarm manager

  8. Content Providers • Store & retrieve data across applications • Uses database-style interface • Example • Contacts

  9. A Simple Application • MapLocation • User enters an address • App displays a map showing address

  10. App Development • Define resources • Implement application classes • Package application • Install & run application

  11. 1. Defining Resources • Several types of resources can be defined • Layout • Strings • Images • Menus • etc. • See: developer.android.com/guide/topics/resources/index.html

  12. Layout • User interface layout specified in XML file • With Eclipse can also do layout visually • Stored in res/layout/filename.xml • Accessed from R.layout class

  13. Layout Example ?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical” android:layout_width="fill_parent” android:layout_height="fill_parent” > <TextView android:layout_width="wrap_content” android:layout_height="wrap_content” android:text="Enter Location”/> <EditTextandroid:id="@+id/location” android:layout_width="fill_parent” android:layout_height="wrap_content” /> <Button android:id="@+id/mapButton” android:layout_width="wrap_content” android:layout_height="wrap_content” android:text="Show Map” /> </LinearLayout>

  14. Strings • Types • String • String Array • Plurals • Can include style and formatting • Stored in res/values/filename.xml • Each string specified as @string/string_name • Accessed as R.string.string_name

  15. R.java • At compilation time, resources are used to generate R.java • Applications access resources through R class

  16. R.java public final class R { public static final class attr { } public static final class id { public static final int location=0x7f040000; public static final intmapButton=0x7f040001; } public static final class layout { public static final int main=0x7f030000; } }

  17. 2. Implement Classes • Usually involves at least one Activity • Initialization code usually in onCreate() • Restore saved state • Set content view • Initialize UI elements • Link UI elements to code actions • Set other Activity parameters as desired

  18. MapLocation.java public class MapLocation extends Activity { public void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); // restore saved state

  19. MapLocation.java public class MapLocation extends Activity { public void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); // restore saved state setContentView(R.layout.main); // set content view

  20. MapLocation.java public class MapLocation extends Activity { public void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); // restore saved state setContentView(R.layout.main); // set content view // initialize UI elements final EditTextaddressText = (EditText) findViewById(R.id.location); final Button button = (Button) findViewById(R.id.mapButton);

  21. MapLocation.java public class MapLocation extends Activity { public void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); // restore saved state setContentView(R.layout.main); // set content view // initialize UI elements final EditTextaddressText = (EditText) findViewById(R.id.location); final Button button = (Button) findViewById(R.id.mapButton); // link UI elements to code actions button.setOnClickListener(newButton.OnClickListener() { public void onClick(Viewv) { try { String address = addressText.getText().toString(); address = address.replace(' ', '+'); Intent geoIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("geo:0,0?q=" + address)); startActivity(geoIntent); } catch (Exception e) {}}}); } }

  22. 3. Package Application • System packages application as a .apk file • Developers specify application information in AndroidManifest.xml

  23. AndroidManifest.xml • Information includes: • Application Name • Components • Required permissions • Application features • Minimum API level • Other • See: developer.android.com/guide/topics/fundamentals.html#Manifest

  24. Example ?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package=”course.examples.SimpleActivity"> <application> <activity android:name=".MapLocation" android:label="Map A Location"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

  25. More on Intents • Components can communicate by sending and receiving Intent events • From AndroidManifest.xml (intent filter) • <action android:name="android.intent.action.MAIN" /> • <category android:name="android.intent.category.LAUNCHER" /> • Specifies that MapLocation Activity is entry point for the application & will appear in launcher • System sends this Intent to application when user clicks on application icon

  26. Tasks • A chain of related Activities is called a task • The task’s Activity objects are stored on a stack with the currently running Activity at the top • At runtime • Newly started activities are pushed onto stack • Hitting the BACK button pops current activity off the stack • Gives the illusion that multiple, unrelated Activities were developed as part of the same application

  27. Component Lifecycles • Android can pause or terminate individual components • For example when: • Task stack changes • Memory gets low • User stops interacting with the application • New application is launched • At these times, Android notifies applications by calling their lifecycle methods • Each component type has its own lifecycle • Will discuss more in later classes

  28. Lab Assignment • Using Eclipse • Create the MapLocation application • Add a text field showing the number of times the users has searched for any location during the current session

More Related