1.MainActivity.xml
<Button android:id="@+id/btn_start_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start Service" xmlns:android="http://schemas.android.com/apk/res/android" />
MainActivity.Java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //setting button click findViewById(R.id.btn_start_service).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Creating an intent for sending to service Intent intent = new Intent(getApplicationContext(), MyIntentService.class); intent.putExtra("id", 101); intent.putExtra("msg", "hi"); //starting service startService(intent); } }); } @Override protected void onStart() { super.onStart(); //register broadcast receiver for the intent MyTaskStatus LocalBroadcastManager.getInstance(this).registerReceiver(MyReceiver, new IntentFilter("MyServiceStatus")); } //Defining broadcast receiver private BroadcastReceiver MyReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String message = intent.getStringExtra("serviceMessage"); Toast.makeText(MainActivity.this, "Received : " + message, Toast.LENGTH_SHORT).show(); } }; @Override protected void onStop() { super.onStop(); LocalBroadcastManager.getInstance(this).unregisterReceiver(MyReceiver); } }
MyIntentService.java
public class MyIntentService extends IntentService { public MyIntentService() { super(MyIntentService.class.getName()); } @Override protected void onHandleIntent(Intent intent) { //retrieving data from the received intent int id = intent.getIntExtra("id",0); String message = intent.getStringExtra("msg"); Log.i("Data ", "id : "+id+" message : "+ message ); //----------------------------------------------- //Do your long running task here //------------------------------------------------ //Broadcasting some data Intent myIntent = new Intent("MyServiceStatus"); myIntent.putExtra("serviceMessage", "Task done"); // Send broadcast LocalBroadcastManager.getInstance(this).sendBroadcast(myIntent); } }