Ir al contenido principal

Android - Basic Steps (Service)

Service

  • Run in the main thread of the hosting application
  • Android can kill the Service if need the resources

Purpose

  • Supporting inter-application method execution
  • Performing background processing
Start a Service
  • Call Context.startService(Intent intent)\
  • To call from a Fragment use
    • getActivity().getApplicationContext().startService( intentService);

Executing the service
  • After call startService(...) 
    • In the Service is executed the method onStartCommand(...)
  • If the method returns the constant START_NOT_STICKY
    • then Android will not restart the service automatically if the the process is killedp
Foreground

  • To execute the service foreground call the method startForeground()
    • Use this if the user is aware of the process


Bind to a Service
  • Call the method Context.bindService(
    • Intent service
    • ServiceConnection con
    • int flags
    • )

Send Toast from the Service

  • On the method onStartCommand receive the message

        public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(), intent.getStringExtra(MSG),
Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}

Binding to Remote Services

When the client is running in a different thread


Communication
  • Using Messenger class
    • Manage a Hanlder
    • Messages can be sent across process boundaries
    • Messages are queued and process sequencially
Implementing Messages
  • Service 
    • Creates a Handler for processing the messages
    • Creates a messenger that provides a binder to a client
  • Client
    • Use the binder to create its own messenger
    • Send the messages to the service
Implementing AIDL

Using AIDL interface


  • Define remote interface in AIDL (Android Interface Definition Language)
    • Declare in .AIDL file
    • AIDL defines how components can interact with the service
  • Implement remote interface
  • Implement Service methods
  • Implement Client methods

AIDL Syntaxis

  • Is like Java interface
  • Cannot declare static fields
  • Non-primitive remote method parameters require a directional tag
    • in - transferred to the remote method
    • out - return to the caller
    • inout - for both

Data Types
  • Java Primitive Types
  • Oher AIDL (Generated interfaces)
  • Classes that implement Parcelable Protocol
  • List
    • Generic List Supported
  • Map
    • Generic Map is not supported

Considerations
  • When create the intent to invoke the AIDL server do it like
    • Intent intent = new Intent(KeyGeneratorAidl.class.getName());
    • Where KeyGeneratorAidl is the server class

Comentarios

Entradas populares de este blog

Android - Basic Steps (Location & Maps)

Location Is composed by Latitude Longitude Time-stamp Accuracy Altitude Speed Bearing LocationProvider Types: Network  Wifi access points Cell phone towers GPS Passive Piggyback on the readings requested by other application Permissions Network  android.permission.ACCESS_COARSE_LOCATION android.permission.ACCESS_FINE_LOCATION GPS android.permission.ACCESS_FINE_LOCATION Passive Provider android.permission.ACCESS_FINE_LOCATION LocationManager System service for accessing location data getSystemService( Context.LOCATION_SERVICE ) Functions Determine the last known user location Register for location update Register to receive intents when the device nears or move away from a given geographic area LocationListener Defines callbacks methods that are called when Location or LocationProvider status change. Methods onLocationChanged(...) onProviderDisabled(...) onProviderEnabled(...) onStatusChan...

IIS - Permisions

IIS Permissions To enable the Active Directory connection in the IIS, follow the next steps: Go to IIS Go to Application Pool Select your App Pool Select Advanced Settings in the right side In the section Process Model Select in Identity value the property " NetworkService " You don´t need to restart your application