Your SlideShare is downloading. ×
Introduction toandroid
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduction toandroid

177
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
177
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Introduction to Android Development
  • 2. WHO WE AREEugeniu Arbuleac Andrei Catinean@arbuleac @electrycarbuleac.ev@gmail.com andrei.catinean@gmail.com
  • 3. Activities and UI IntentsBroadcast Receivers Services
  • 4. Activities and UI
  • 5. Activities and UI A screen Application = Σ activity
  • 6. Activity Lifecycle
  • 7. Activity Lifecycle Managed by ActivityManager
  • 8. Activity Lifecycle $ ¢ Managed by ActivityManager Developer says what happens at each state
  • 9. Activity LifecycleFirst time run D/MyActivity( 1146): onCreate D/MyActivity( 1146): onStart D/MyActivity( 1146): onResumeOpen another activity, then Back button D/MyActivity( 1146): onClickAnotherActivity D/MyActivity( 1146): onPause D/MyActivity( 1146): onStop D/MyActivity( 1146): onRestart D/MyActivity( 1146): onStart D/MyActivity( 1146): onResume
  • 10. Activity LifecycleRotate screenD/MyActivity( 1146): onPauseD/MyActivity( 1146): onStopD/MyActivity( 1146): onDestroyD/MyActivity( 1146): onCreateD/MyActivity( 1146): onStartD/MyActivity( 1146): onResume
  • 11. Activity LifecycleRotate screenD/MyActivity( 1146): onPauseD/MyActivity( 1146): onStopD/MyActivity( 1146): onDestroyD/MyActivity( 1146): onCreateD/MyActivity( 1146): onStartD/MyActivity( 1146): onResumeHome ButtonD/MyActivity( 1146): onPauseD/MyActivity( 1146): onStop
  • 12. Activity Lifecycle package ro.gdgcluj.demoapp; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MyActivity extends Activity { static final String TAG = MyActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); Log.d(TAG, "onCreate"); } @Override protected void onStart() { super.onStart(); Log.d(TAG, "onStart"); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "onResume"); }
  • 13. @Override protected void onPause() { super.onPause(); Log.d(TAG, "onPause"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG, "onRestart"); } @Override protected void onStop() { super.onStop(); Log.d(TAG, "onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy"); }}
  • 14. Declaring the ActivityLet your application know about your Activity into the AndroidManifest.xml <manifest ... > <application ... > <activity android:name=".MyActivity" /> ... </application ... > ... </manifest >
  • 15. Declaring the ActivityLet your application know about your Activity into the AndroidManifest.xml <manifest ... > <application ... > <activity android:name=".MyActivity" /> ... </application ... > ... </manifest >For your main activity use Intent Filters<manifest ... > <application ... > <activity android:name=".MyActivity" > <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:name= "android.intent.category.LAUNCHER" /> <intent-filter /> <activity /> </application ... > ...</manifest >
  • 16. Building Android UI XML Declare UI in XML Inflate XML in Java files
  • 17. Building Android UI XML Programmatically Declare UI in XML VS. Initialize new widgets Inflate XML in Java files Customize properties for each
  • 18. Building Android UI XML Programmatically Declare UI in XML VS. Initialize new widgets Inflate XML in Java files Customize properties for each Use them both
  • 19. Layouts and views hierarchy
  • 20. Intents
  • 21. Intents Used to start activities, start/stop services, or send broadcasts
  • 22. Using IntentsstartActivity(Intent activity);startService(Intent service);stopService(Intent service);sendBroadcast(Intent intent);
  • 23. Explicit IntentsstartActivity(new Intent(this, TargetActivity.class));startService(new Intent(this, TargetService.class));
  • 24. Explicit IntentsstartActivity(new Intent(this, TargetActivity.class));startService(new Intent(this, TargetService.class));Implicit IntentsstartService(new Intent("example.intent.action.IntentService"));sendBroadcast(new Intent("example.intent.action.Receiver"));
  • 25. Explicit IntentsstartActivity(new Intent(this, TargetActivity.class));startService(new Intent(this, TargetService.class));Implicit IntentsstartService(new Intent("example.intent.action.IntentService"));sendBroadcast(new Intent("example.intent.action.Receiver"));AndroidManifest.xml<service android:name=".IntentService"> <intent-filter> <action android:name="example.intent.action.IntentService" /> </intent-filter></service><receiver android:name=".Receiver"> <intent-filter> <action android:name="example.intent.action.Receiver" /> </intent-filter></receiver>
  • 26. Intent Filters Activity Action Service Receiver
  • 27. Intent Filters Activity Action Service Receiver AndroidManifeset.xml <intent-filter> <action android:name="any.action.you.want" /> </intent-filter>
  • 28. Services
  • 29. Services Run in background Don’t have UI Run on the UI thread
  • 30. Services Run in background UI Activity Don’t have UI startService(); stopService(); Run on the UI thread Service
  • 31. Service Lifecycle Service starts and "runs" until it gets a request to stop To offload work from main thread, use intent service. Intent service uses worker thread, stops when done with work.
  • 32. Service Example package ro.gdgcluj.demoapp; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; public class MyService extends Service { static final String TAG = MyService.class.getSimpleName(); @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { Log.d(TAG, "onCreate"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG, "onStartCommand"); return START_STICKY; } @Override public void onDestroy() { Log.d(TAG, "onDestroy"); } }
  • 33. Declaring the Service Called via its class name <service android:name=".ServiceDemo"></service> Called via action <service android:name=".IntentService"> <intent-filter> <action android:name="example.intent.action.IntentService" /> </intent-filter> </service>
  • 34. Broadcast Receivers
  • 35. Broadcast Receivers Intent based publish-subscribe mechanism Listening system events: incoming calls, SMS messages a.o.
  • 36. Broadcast Receivers Intent based publish-subscribe mechanism Listening system events: incoming calls, SMS messages a.o. Register for certain intents Get notified when intent happens
  • 37. Broadcast Receiver Example package ro.gdgcluj.demoapp; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class Receiver extends BroadcastReceiver { static final String TAG = Receiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "onReceive action: "+intent.getAction() ); } }
  • 38. Registering the Broadcast Receiver Declaring it in AndroidManifest.xml <receiver android:name=".ReceiverDemo"> <intent-filter> <action android:name="example.intent.action.Receiver" /> </intent-filter> </receiver>
  • 39. Registering the Broadcast Receiver Registering Programmatically @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... // Create the receiver receiver = new Receiver(); filter = new IntentFilter( ANY_INTENT_ACTION ); } protected void onResume() { super.onResume(); super.registerReceiver(receiver, filter); } @Override protected void onPause() { super.onPause(); unregisterReceiver(receiver); }
  • 40. That’s all!Questions
  • 41. THANK YOUEugeniu Arbuleac Andrei Catinean@arbuleac @electrycarbuleac.ev@gmail.com andrei.catinean@gmail.com