SlideShare a Scribd company logo
Introduction to Android
     Development
WHO WE ARE

Eugeniu Arbuleac                          Andrei Catinean
@arbuleac                                             @electryc
arbuleac.ev@gmail.com                andrei.catinean@gmail.com
Activities and UI
                                 Intents


Broadcast Receivers

                      Services
Activities and UI
Activities and UI



                    A screen

                    Application = Σ activity
Activity Lifecycle
Activity Lifecycle



                 Managed by ActivityManager
Activity Lifecycle


         $

     ¢             Managed by ActivityManager

              Developer says what happens at each state
Activity Lifecycle
First time run
 D/MyActivity( 1146): onCreate
 D/MyActivity( 1146): onStart
 D/MyActivity( 1146): onResume




Open 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
Activity Lifecycle
Rotate screen
D/MyActivity(   1146):   onPause
D/MyActivity(   1146):   onStop
D/MyActivity(   1146):   onDestroy
D/MyActivity(   1146):   onCreate
D/MyActivity(   1146):   onStart
D/MyActivity(   1146):   onResume
Activity Lifecycle
Rotate screen
D/MyActivity(   1146):   onPause
D/MyActivity(   1146):   onStop
D/MyActivity(   1146):   onDestroy
D/MyActivity(   1146):   onCreate
D/MyActivity(   1146):   onStart
D/MyActivity(   1146):   onResume




Home Button
D/MyActivity( 1146): onPause
D/MyActivity( 1146): onStop
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");
            }
@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");
    }

}
Declaring the Activity
Let your application know about your Activity into the AndroidManifest.xml

  <manifest ... >
    <application ... >
        <activity android:name=".MyActivity" />
        ...
    </application ... >
    ...
  </manifest >
Declaring the Activity
Let 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 >
Building Android UI

 XML

 Declare UI in XML

 Inflate XML in Java files
Building Android UI

 XML                                         Programmatically

 Declare UI in XML           VS.          Initialize new widgets

 Inflate XML in Java files         Customize properties for each
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
Layouts and views hierarchy
Intents
Intents




 Used to start activities, start/stop services, or send broadcasts
Using Intents
startActivity(Intent activity);


startService(Intent service);


stopService(Intent service);


sendBroadcast(Intent intent);
Explicit Intents
startActivity(new Intent(this, TargetActivity.class));

startService(new Intent(this, TargetService.class));
Explicit Intents
startActivity(new Intent(this, TargetActivity.class));

startService(new Intent(this, TargetService.class));




Implicit Intents
startService(new Intent("example.intent.action.IntentService"));

sendBroadcast(new Intent("example.intent.action.Receiver"));
Explicit Intents
startActivity(new Intent(this, TargetActivity.class));

startService(new Intent(this, TargetService.class));




Implicit Intents
startService(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>
Intent Filters
                    Activity

           Action   Service

                    Receiver
Intent Filters
                                                      Activity

                               Action                 Service

                                                      Receiver

  AndroidManifeset.xml
  <intent-filter>
      <action android:name="any.action.you.want" />
  </intent-filter>
Services
Services

  Run in background

  Don’t have UI

  Run on the UI thread
Services

  Run in background                  UI Activity

  Don’t have UI          startService();         stopService();




  Run on the UI thread                 Service
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.
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");
            }

        }
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>
Broadcast Receivers
Broadcast Receivers
   Intent based publish-subscribe mechanism

   Listening system events: incoming calls, SMS messages a.o.
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
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() );
            }

        }
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>
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);
   }
That’s all!

Questions
THANK YOU

Eugeniu Arbuleac                         Andrei Catinean
@arbuleac                                            @electryc
arbuleac.ev@gmail.com               andrei.catinean@gmail.com

More Related Content

What's hot (20)

PDF
Saindo da zona de conforto… resolvi aprender android
Daniel Baccin
 
PDF
Eddystone beacons demo
Angelo Rüggeberg
 
PDF
Build Widgets
scottw
 
PDF
Android wear (coding)
Douglas Drumond
 
PDF
guice-servlet
Masaaki Yonebayashi
 
PDF
Architectures in the compose world
Fabio Collini
 
PDF
yagdao-0.3.1 JPA guide
Mert Can Akkan
 
PDF
Implementing cast in android
Angelo Rüggeberg
 
PPTX
Architecting Single Activity Applications (With or Without Fragments)
Gabor Varadi
 
PDF
Testing Android apps based on Dagger and RxJava
Fabio Collini
 
DOCX
Exercises
maamir farooq
 
KEY
Android workshop
Michael Galpin
 
PDF
State management in android applications
Gabor Varadi
 
PDF
Managing parallelism using coroutines
Fabio Collini
 
PPT
Activities
Sourabh Sahu
 
PPTX
9 services
Ajayvorar
 
PDF
yagdao-0.3.1 hibernate guide
Mert Can Akkan
 
PDF
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Ontico
 
PDF
Тестирование на Android с Dagger 2
Kirill Rozov
 
PPTX
React hooks
Assaf Gannon
 
Saindo da zona de conforto… resolvi aprender android
Daniel Baccin
 
Eddystone beacons demo
Angelo Rüggeberg
 
Build Widgets
scottw
 
Android wear (coding)
Douglas Drumond
 
guice-servlet
Masaaki Yonebayashi
 
Architectures in the compose world
Fabio Collini
 
yagdao-0.3.1 JPA guide
Mert Can Akkan
 
Implementing cast in android
Angelo Rüggeberg
 
Architecting Single Activity Applications (With or Without Fragments)
Gabor Varadi
 
Testing Android apps based on Dagger and RxJava
Fabio Collini
 
Exercises
maamir farooq
 
Android workshop
Michael Galpin
 
State management in android applications
Gabor Varadi
 
Managing parallelism using coroutines
Fabio Collini
 
Activities
Sourabh Sahu
 
9 services
Ajayvorar
 
yagdao-0.3.1 hibernate guide
Mert Can Akkan
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Ontico
 
Тестирование на Android с Dagger 2
Kirill Rozov
 
React hooks
Assaf Gannon
 

Similar to Introduction toandroid (20)

PPTX
Data Transfer between activities and Database
faiz324545
 
PDF
Marakana android-java developers
Marko Gargenta
 
PDF
android_mod_3.useful for bca students for their last sem
aswinbiju1652
 
ODP
Android App Development - 02 Activity and intent
Diego Grancini
 
PDF
Hello android
vasily.romanikhin
 
PPTX
MAD Unit 5.pptxxxxxxxxxxxxxxxxxxxxxxxxxx
34ShreyaChauhan
 
PPT
Ruby conf2012
Chandan Jog
 
PPT
Android lifecycle
Kumar
 
PDF
Android101
David Marques
 
PPT
Android activity, service, and broadcast recievers
Utkarsh Mankad
 
PPT
Android activity, service, and broadcast recievers
Jagdish Gediya
 
PDF
Android Basic Components
Jussi Pohjolainen
 
PPTX
Android Development Basics
Prajakta Dharmpurikar
 
PDF
02 programmation mobile - android - (activity, view, fragment)
TECOS
 
PDF
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
PDF
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
PDF
Android development Training Programme Day 2
DHIRAJ PRAVIN
 
PPT
Best android classes in mumbai
Vibrant Technologies & Computers
 
DOCX
Android building blocks and application life cycle-chapter3
Dr. Ramkumar Lakshminarayanan
 
PPTX
Hello android world
eleksdev
 
Data Transfer between activities and Database
faiz324545
 
Marakana android-java developers
Marko Gargenta
 
android_mod_3.useful for bca students for their last sem
aswinbiju1652
 
Android App Development - 02 Activity and intent
Diego Grancini
 
Hello android
vasily.romanikhin
 
MAD Unit 5.pptxxxxxxxxxxxxxxxxxxxxxxxxxx
34ShreyaChauhan
 
Ruby conf2012
Chandan Jog
 
Android lifecycle
Kumar
 
Android101
David Marques
 
Android activity, service, and broadcast recievers
Utkarsh Mankad
 
Android activity, service, and broadcast recievers
Jagdish Gediya
 
Android Basic Components
Jussi Pohjolainen
 
Android Development Basics
Prajakta Dharmpurikar
 
02 programmation mobile - android - (activity, view, fragment)
TECOS
 
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
Androidoscon20080721 1216843094441821-9
Gustavo Fuentes Zurita
 
Android development Training Programme Day 2
DHIRAJ PRAVIN
 
Best android classes in mumbai
Vibrant Technologies & Computers
 
Android building blocks and application life cycle-chapter3
Dr. Ramkumar Lakshminarayanan
 
Hello android world
eleksdev
 
Ad

Introduction toandroid

  • 2. WHO WE ARE Eugeniu Arbuleac Andrei Catinean @arbuleac @electryc [email protected] [email protected]
  • 3. Activities and UI Intents Broadcast Receivers Services
  • 5. Activities and UI A screen Application = Σ activity
  • 7. Activity Lifecycle Managed by ActivityManager
  • 8. Activity Lifecycle $ ¢ Managed by ActivityManager Developer says what happens at each state
  • 9. Activity Lifecycle First time run D/MyActivity( 1146): onCreate D/MyActivity( 1146): onStart D/MyActivity( 1146): onResume Open 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 Lifecycle Rotate screen D/MyActivity( 1146): onPause D/MyActivity( 1146): onStop D/MyActivity( 1146): onDestroy D/MyActivity( 1146): onCreate D/MyActivity( 1146): onStart D/MyActivity( 1146): onResume
  • 11. Activity Lifecycle Rotate screen D/MyActivity( 1146): onPause D/MyActivity( 1146): onStop D/MyActivity( 1146): onDestroy D/MyActivity( 1146): onCreate D/MyActivity( 1146): onStart D/MyActivity( 1146): onResume Home Button D/MyActivity( 1146): onPause D/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 Activity Let your application know about your Activity into the AndroidManifest.xml <manifest ... > <application ... > <activity android:name=".MyActivity" /> ... </application ... > ... </manifest >
  • 15. Declaring the Activity Let 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
  • 21. Intents Used to start activities, start/stop services, or send broadcasts
  • 22. Using Intents startActivity(Intent activity); startService(Intent service); stopService(Intent service); sendBroadcast(Intent intent);
  • 23. Explicit Intents startActivity(new Intent(this, TargetActivity.class)); startService(new Intent(this, TargetService.class));
  • 24. Explicit Intents startActivity(new Intent(this, TargetActivity.class)); startService(new Intent(this, TargetService.class)); Implicit Intents startService(new Intent("example.intent.action.IntentService")); sendBroadcast(new Intent("example.intent.action.Receiver"));
  • 25. Explicit Intents startActivity(new Intent(this, TargetActivity.class)); startService(new Intent(this, TargetService.class)); Implicit Intents startService(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>
  • 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>
  • 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); }
  • 41. THANK YOU Eugeniu Arbuleac Andrei Catinean @arbuleac @electryc [email protected] [email protected]