Example of IntentService and BroadcastReceiver

Example of IntentService and BroadcastReceiver - Hello Friend GENERAL INFO FOR ANDROID DEVELOPMENT, In the article you read this time with the title Example of IntentService and BroadcastReceiver, We have prepared this article for you to read and retrieve information there in. Hopefully the contents of postings Artikel Android code sample: Service and IntentService, Artikel BroadcastReceiver, We write this you can understand. Alright, good read.

The Title : Example of IntentService and BroadcastReceiver
link : Example of IntentService and BroadcastReceiver

Read also


Example of IntentService and BroadcastReceiver


Last post show example of using Service and BroadcastReceiver, this example show how to do the same job using IntentService and BroadcastReceiver.


layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.blogspot.android_er.androidservice.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />

<Button
android:id="@+id/startservice"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Start Service"/>
<EditText
android:id="@+id/msgtosend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="msg to send..." />
<Button
android:id="@+id/send"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Send msg to service"/>
<TextView
android:id="@+id/cntreceived"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="26dp"/>
<TextView
android:id="@+id/msgreceived"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textStyle="bold"
android:textSize="20dp"/>

</LinearLayout>


MainActivity.java
package com.blogspot.android_er.androidservice;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

Button btnStart, btnSend;
EditText editTextMsgToSend;
TextView textViewCntReceived, textViewMsgReceived;

MyMainReceiver myMainReceiver;
Intent myIntent = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button)findViewById(R.id.startservice);
btnSend = (Button)findViewById(R.id.send);
editTextMsgToSend = (EditText)findViewById(R.id.msgtosend);
textViewCntReceived = (TextView)findViewById(R.id.cntreceived);
textViewMsgReceived = (TextView)findViewById(R.id.msgreceived);

btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startService();
}
});

btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String msgToService = editTextMsgToSend.getText().toString();

Intent intent = new Intent();
intent.setAction(MyIntentService.ACTION_MSG_TO_SERVICE);
intent.putExtra(MyIntentService.KEY_MSG_TO_SERVICE, msgToService);
sendBroadcast(intent);
}
});
}

private void startService(){
myIntent = new Intent(MainActivity.this, MyIntentService.class);
startService(myIntent);
}

@Override
protected void onStart() {
myMainReceiver = new MyMainReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MyIntentService.ACTION_UPDATE_CNT);
intentFilter.addAction(MyIntentService.ACTION_UPDATE_MSG);
registerReceiver(myMainReceiver, intentFilter);
super.onStart();
}

@Override
protected void onStop() {
unregisterReceiver(myMainReceiver);
super.onStop();
}

@Override
protected void onDestroy() {
super.onDestroy();
}

private class MyMainReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(MyIntentService.ACTION_UPDATE_CNT)){
int int_from_service = intent.getIntExtra(MyIntentService.KEY_INT_FROM_SERVICE, 0);
textViewCntReceived.setText(String.valueOf(int_from_service));
}else if(action.equals(MyIntentService.ACTION_UPDATE_MSG)){
String string_from_service = intent.getStringExtra(MyIntentService.KEY_STRING_FROM_SERVICE);
textViewMsgReceived.setText(String.valueOf(string_from_service));
}
}
}
}


MyIntentService.java
package com.blogspot.android_er.androidservice;

import android.app.IntentService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Looper;
import android.widget.Toast;

public class MyIntentService extends IntentService {

//from MyIntentService to MainActivity
final static String KEY_INT_FROM_SERVICE = "KEY_INT_FROM_SERVICE";
final static String KEY_STRING_FROM_SERVICE = "KEY_STRING_FROM_SERVICE";
final static String ACTION_UPDATE_CNT = "UPDATE_CNT";
final static String ACTION_UPDATE_MSG = "UPDATE_MSG";

//from MainActivity to MyIntentService
final static String KEY_MSG_TO_SERVICE = "KEY_MSG_TO_SERVICE";
final static String ACTION_MSG_TO_SERVICE = "MSG_TO_SERVICE";

MyServiceReceiver myServiceReceiver;
int cnt;

public MyIntentService() {
super("MyIntentService");
}

@Override
public void onCreate() {
Toast.makeText(getApplicationContext(),
"onCreate", Toast.LENGTH_LONG).show();
myServiceReceiver = new MyServiceReceiver();
super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(),
"onStartCommand", Toast.LENGTH_LONG).show();

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_MSG_TO_SERVICE);
registerReceiver(myServiceReceiver, intentFilter);

return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
Toast.makeText(getApplicationContext(),
"onDestroy", Toast.LENGTH_LONG).show();
unregisterReceiver(myServiceReceiver);
super.onDestroy();
}

@Override
protected void onHandleIntent(Intent intent) {

String prompt;
//check if current thread is Main Thread (UI)
if(Looper.myLooper() == Looper.getMainLooper()){
prompt = "onHandleIntent run in UI Thread";
}else{
prompt = "onHandleIntent run in NOT UI Thread";
}

Intent iPrompt = new Intent();
iPrompt.setAction(ACTION_UPDATE_MSG);
iPrompt.putExtra(KEY_STRING_FROM_SERVICE, prompt);
sendBroadcast(iPrompt);

cnt = 10;
while (cnt >= 0){
try {
Thread.sleep(1000);

Intent i = new Intent();
i.setAction(ACTION_UPDATE_CNT);
i.putExtra(KEY_INT_FROM_SERVICE, cnt);
sendBroadcast(i);

cnt--;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public class MyServiceReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

String action = intent.getAction();
if(action.equals(ACTION_MSG_TO_SERVICE)){
String msg = intent.getStringExtra(KEY_MSG_TO_SERVICE);

msg = new StringBuilder(msg).reverse().toString();

//send back to MainActivity
Intent i = new Intent();
i.setAction(ACTION_UPDATE_MSG);
i.putExtra(KEY_STRING_FROM_SERVICE, msg);
sendBroadcast(i);
}
}
}

}


Modify AndroidManifest.xml to add <service> of ".MyIntentService".
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blogspot.android_er.androidservice">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".MyIntentService"/>
</application>

</manifest>


download filesDownload the files .

Related:
Android example of using Thread and Handler



Thus Article Example of IntentService and BroadcastReceiver

The End Article Example of IntentService and BroadcastReceiver This time, hopefully can give benefits to all of you. well, see you in posting other articles.

You are now reading the article Example of IntentService and BroadcastReceiver with the link address http://xorislogo.blogspot.com/2016/05/example-of-intentservice-and.html

0 Response to "Example of IntentService and BroadcastReceiver"

Post a Comment