Android Intent Service
- Unlike regular service and bound servie, Intent Service is doesn’t run on the UI thread.
- To create an Intent Service class, the class needs to extend from the IntentService.
- IntentService itself is extended from Service.
- Intent Service will stop itself when the tasks are completed.
- Intent Service handle all start asynchronous requests (expressed as Intents) on demand, one at a time before it destroys itself.
- The communication between intent service can be done through interface, BroadcastReceiver, or event bus libraries.
- etc.
Here is example of implementing Intent Service in Android.
1. Create a class that extends IntentService, BasicIntentService.java
public class BasicIntentService extends IntentService { public static final String PARAM_INPUT = "INPUT_MSG"; public static final String PARAM_OUTPUT = "OUTPUT_MSG"; public BasicIntentService() { super("BasicIntentService"); } @Override protected void onHandleIntent(Intent intent) { String msg = intent.getStringExtra(PARAM_INPUT); msg = DateFormat.format("MM/dd/yy h:mm:ss aa", System.currentTimeMillis()) + ": " + msg; SystemClock.sleep(5000); // 5 seconds String resultTxt = msg + "\n" + DateFormat.format("MM/dd/yy h:mm:ss aa", System.currentTimeMillis()) + ": " + "Ok, done!\n"; Intent broadcastIntent = new Intent(); broadcastIntent.setAction(MainActivity.ResponseReceiver.ACTION_RESP); broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT); broadcastIntent.putExtra(PARAM_OUTPUT, resultTxt); sendBroadcast(broadcastIntent); } @Override public void onDestroy() { super.onDestroy(); Log.d("IntentService", "onDestroy"); } }
2. Register it in the manifest.xml file in the application tag.
3. Add the following in an Activity class.
@Override protected void onResume() { super.onResume(); IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP); filter.addCategory(Intent.CATEGORY_DEFAULT); receiver = new ResponseReceiver(); registerReceiver(receiver, filter); } private ResponseReceiver receiver; public void intentService(View view) { Log.d("intentService", "calling BasicIntentService"); Intent msgIntent = new Intent(this, BasicIntentService.class); msgIntent.putExtra(BasicIntentService.PARAM_INPUT, "Hello, please go to take a nap."); startService(msgIntent); } public class ResponseReceiver extends BroadcastReceiver { public static final String ACTION_RESP = "com.example.service.action.MESSAGE_PROCESSED"; @Override public void onReceive(Context context, Intent intent) { TextView result = (TextView) findViewById(R.id.tv_result); String text = intent.getStringExtra(BasicIntentService.PARAM_OUTPUT); Log.d("onReceive", text); result.setText(result.getText().toString() + "\n" + text); } }
Search within Codexpedia
Custom Search
Search the entire web
Custom Search
Related Posts