Technical Knowledge

technical knowledge is that type of blogger in which you can find all the soluctions of your problems which you cannot solve you can see the video given on this blog and solve your problem by yourself.

Like us on Facebook

Technical Knowledge
Showing posts with label Ordered. Show all posts
Showing posts with label Ordered. Show all posts

Saturday, March 28, 2015

Ordered broadcast receivers:Android tutorial

Program description:

This is a sample demo program for ordered broadcast receivers in Android.

This program contains one activity, and 3 receivers.
Activity has a button, on clicking which we will send an ordered broadcast with implicit intent with action com.techpalle.RECEIVERS. All the 3 receiver will be having same intent filter with this matching action in them. But only difference is Receiver3 has priority-10, Receiver1 has priority-3, Receiver2 has priority-2. So the order of execution is with highest priority number to least priority number. 

So, Receiver3 executed first, then Receiver1 and then Receiver2. 

Note: If multiple receivers have same priority then android will choose to execute them in any random order.

Types of broadcasts: 3 types
1. Normal broadcasts - by using sendBroadcast()
2. Ordered broadcasts - by using sendOrderedBroadcast()
3. Sticky broadcasts - by using sendStickyBroadcast()

Normal broadcasts: by using sendBroadcast() method we can send normal broadcasts with an intent. If multiple components (receivers) are satisfying the intent given in the broadcast then android will start all the receivers in any order (randomly or simultaneously or one by one). 
Check this link for normal broadcasts

Ordered broadcasts: With ordered broadcasts programmer has the control over the order in which a receiver can be executed.
You can prioritize the order by giving priority attribute in the intent-filter tag of receiver tag in manifest file. More the priority number, higher the priority.
Along with prioritizing the order, we can also abort a broadcast in between and stop it going to the next receivers. With normal broadcasts we don't have this option.

Sticky broadcasts: Intent that is broadcasted with sendStickyBroadcast() will be stick with android for future users. (Future registerReceiver requests).

First Activity:

package com.techpalle.b15_rectypes;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent();
in.setAction("com.techpalle.RECEIVERS");
sendOrderedBroadcast(in, null);
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

xml file for first activity 
File name : activity_main.xml


  xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

Broadcast Receiver
File name : Receiver1.java


package com.techpalle.b15_rectypes;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Receiver1 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String res = getResultData();
Toast.makeText(context, "RCVR 1.."+res, 0).show();
}
}

Broadcast Receiver
File name : Receiver2.java

package com.techpalle.b15_rectypes;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Receiver2 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String res = getResultData();
Toast.makeText(context, "RCVR 2.."+res, 0).show();
}
}

Broadcast Receiver
File name : Receiver3.java

package com.techpalle.b15_rectypes;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.widget.Toast;

public class Receiver3 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, "RCVR 3", 0).show();
//abortBroadcast();
setResultData("Hey..");
}
}

Manifest file
File name : AndroidManifest.xml


  
package="com.techpalle.b15_rectypes"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.techpalle.b15_rectypes.MainActivity"
android:label="@string/app_name" >























Download complete code : Click to download

Android interview questions on Ordered broadcast receivers:
Difference between Normal broadcast, ordered broadcast, and sticky broadcast?

Tags: android, ordered, broadcast receivers, priority

Ordered broadcast receiver assignment: android tutorial

Program description:

This is an assignment program on using ordered broadcast receiver. This assignment has 2 applications. 


Assignment description: 
First application is having one activity, and 2 broadcast receivers (static).
Both the receivers have an intent filter with action "com.techpalle.action.ORDERED".
But Receiver1 has android:priority="1", and Receiver2 has android:priority="3".
In this first application first activity has a button to send ordered broadcast with action "com.techpalle.action.ORDERED". 

As you already know there are 3 types of broadcast receivers are there in android.

Note: More the priority number, higher the priority. Higher priority receivers will be executed first.

Second application has one activity, and 1 broadcast receiver (static).
This receiver has intent filter with same action "com.techpalle.action.ORDERED".
This Receiver3 has android:priority="2".

Assumption: It is assumed that the second application should be already in the phone or emulator. So make sure that you first run the second application and then first application.

Now once user runs the first application, and clicks the button on the first activity it will send an ordered broadcast. Now there are 3 receivers are matching with the intent action in their intent-filter. So all the 3 broadcast receiver's onReceive()  method will be executed.

But since we are using ordered broadcast, first highest priority receiver will be executed. 

So Receiver2 of application1 will get executed first. (priority 3)
In the Receiver2, we are generating a random number between 0 to 100, and passing this as data to next receiver. (by using setResultCode() method).

Receiver3 of second application has next priority (priority 2), so that receiver will be called.
In the Receiver3 we will receive the data send by Receiver2 of first application. (by using getResultCode() method).

In the Receiver3 we will check if the data is even or odd. If it is even then we are stopping that broadcast in Receiver3 itself by using abortBroadCast() method. If not Receiver1 of first application will continue.

First Application's First Activity:

package com.techpalle.b15_rcvr_asg2;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
Button b;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent();
in.setAction("com.techpalle.action.ORDERED");
sendOrderedBroadcast(in, null);
}
});
}

}

First Application's Broadcast Receiver 1:

package com.techpalle.b15_rcvr_asg2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Recvr1 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
int data = getResultCode();
Toast.makeText(context, "receiver 1..data.."+data, 0).show();
}
}

First Application's Broadcast Receiver 2:
package com.techpalle.b15_rcvr_asg2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Recvr2 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "receiver 2..", 0).show();
int ran = (int) (Math.random()*100);
setResultCode(ran);
}
}

xml file for first activity 
File name : activity_main.xml
  xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

First application's Manifest file (to check the priorities of the receivers)
File name : AndroidManifest.xml

  
package="com.techpalle.b15_rcvr_asg2"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.techpalle.b15_rcvr_asg2.MainActivity"
android:label="@string/app_name" >


















Second Application's First Activity:

package com.techpalle.b15_rcvr_asg2_app2;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

Second Application's Broadcast Receiver 3:

package com.techpalle.b15_rcvr_asg2_app2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Recvr3 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
int data = getResultCode();
if(data % 2 != 0){
abortBroadcast();
}
Toast.makeText(context, "receiver 3..data.."+data, 0).show();
}

}

Second application's Manifest file (to see the priority)
File name : AndroidManifest.xml

  
package="com.techpalle.b15_rcvr_asg2_app2"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.techpalle.b15_rcvr_asg2_app2.MainActivity"
android:label="@string/app_name" >













Download complete code : Click to download

Android interview questions on Ordered broadcast receivers:
Difference between Normal broadcast, ordered broadcast, and sticky broadcast?

Tags: android, ordered, broadcast receivers, priority

Monday, March 23, 2015

Ordered broadcast receiver assignment: android tutorial

Program description:

This is an assignment program on using ordered broadcast receiver. This assignment has 2 applications. 


Assignment description: 
First application is having one activity, and 2 broadcast receivers (static).
Both the receivers have an intent filter with action "com.techpalle.action.ORDERED".
But Receiver1 has android:priority="1", and Receiver2 has android:priority="3".
In this first application first activity has a button to send ordered broadcast with action "com.techpalle.action.ORDERED". 

As you already know there are 3 types of broadcast receivers are there in android.

Note: More the priority number, higher the priority. Higher priority receivers will be executed first.

Second application has one activity, and 1 broadcast receiver (static).
This receiver has intent filter with same action "com.techpalle.action.ORDERED".
This Receiver3 has android:priority="2".

Assumption: It is assumed that the second application should be already in the phone or emulator. So make sure that you first run the second application and then first application.

Now once user runs the first application, and clicks the button on the first activity it will send an ordered broadcast. Now there are 3 receivers are matching with the intent action in their intent-filter. So all the 3 broadcast receiver's onReceive()  method will be executed.

But since we are using ordered broadcast, first highest priority receiver will be executed. 

So Receiver2 of application1 will get executed first. (priority 3)
In the Receiver2, we are generating a random number between 0 to 100, and passing this as data to next receiver. (by using setResultCode() method).

Receiver3 of second application has next priority (priority 2), so that receiver will be called.
In the Receiver3 we will receive the data send by Receiver2 of first application. (by using getResultCode() method).

In the Receiver3 we will check if the data is even or odd. If it is even then we are stopping that broadcast in Receiver3 itself by using abortBroadCast() method. If not Receiver1 of first application will continue.

First Application's First Activity:

package com.techpalle.b15_rcvr_asg2;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
Button b;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent();
in.setAction("com.techpalle.action.ORDERED");
sendOrderedBroadcast(in, null);
}
});
}

}

First Application's Broadcast Receiver 1:

package com.techpalle.b15_rcvr_asg2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Recvr1 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
int data = getResultCode();
Toast.makeText(context, "receiver 1..data.."+data, 0).show();
}
}

First Application's Broadcast Receiver 2:
package com.techpalle.b15_rcvr_asg2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Recvr2 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "receiver 2..", 0).show();
int ran = (int) (Math.random()*100);
setResultCode(ran);
}
}

xml file for first activity 
File name : activity_main.xml
  xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

First application's Manifest file (to check the priorities of the receivers)
File name : AndroidManifest.xml

  
package="com.techpalle.b15_rcvr_asg2"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.techpalle.b15_rcvr_asg2.MainActivity"
android:label="@string/app_name" >


















Second Application's First Activity:

package com.techpalle.b15_rcvr_asg2_app2;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

Second Application's Broadcast Receiver 3:

package com.techpalle.b15_rcvr_asg2_app2;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Recvr3 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
int data = getResultCode();
if(data % 2 != 0){
abortBroadcast();
}
Toast.makeText(context, "receiver 3..data.."+data, 0).show();
}

}

Second application's Manifest file (to see the priority)
File name : AndroidManifest.xml

  
package="com.techpalle.b15_rcvr_asg2_app2"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.techpalle.b15_rcvr_asg2_app2.MainActivity"
android:label="@string/app_name" >













Download complete code : Click to download

Android interview questions on Ordered broadcast receivers:
Difference between Normal broadcast, ordered broadcast, and sticky broadcast?

Tags: android, ordered, broadcast receivers, priority

Ordered broadcast receivers:Android tutorial

Program description:

This is a sample demo program for ordered broadcast receivers in Android.

This program contains one activity, and 3 receivers.
Activity has a button, on clicking which we will send an ordered broadcast with implicit intent with action com.techpalle.RECEIVERS. All the 3 receiver will be having same intent filter with this matching action in them. But only difference is Receiver3 has priority-10, Receiver1 has priority-3, Receiver2 has priority-2. So the order of execution is with highest priority number to least priority number. 

So, Receiver3 executed first, then Receiver1 and then Receiver2. 

Note: If multiple receivers have same priority then android will choose to execute them in any random order.

Types of broadcasts: 3 types
1. Normal broadcasts - by using sendBroadcast()
2. Ordered broadcasts - by using sendOrderedBroadcast()
3. Sticky broadcasts - by using sendStickyBroadcast()

Normal broadcasts: by using sendBroadcast() method we can send normal broadcasts with an intent. If multiple components (receivers) are satisfying the intent given in the broadcast then android will start all the receivers in any order (randomly or simultaneously or one by one). 
Check this link for normal broadcasts

Ordered broadcasts: With ordered broadcasts programmer has the control over the order in which a receiver can be executed.
You can prioritize the order by giving priority attribute in the intent-filter tag of receiver tag in manifest file. More the priority number, higher the priority.
Along with prioritizing the order, we can also abort a broadcast in between and stop it going to the next receivers. With normal broadcasts we don't have this option.

Sticky broadcasts: Intent that is broadcasted with sendStickyBroadcast() will be stick with android for future users. (Future registerReceiver requests).

First Activity:

package com.techpalle.b15_rectypes;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent();
in.setAction("com.techpalle.RECEIVERS");
sendOrderedBroadcast(in, null);
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

xml file for first activity 
File name : activity_main.xml


  xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

Broadcast Receiver
File name : Receiver1.java


package com.techpalle.b15_rectypes;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Receiver1 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String res = getResultData();
Toast.makeText(context, "RCVR 1.."+res, 0).show();
}
}

Broadcast Receiver
File name : Receiver2.java

package com.techpalle.b15_rectypes;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class Receiver2 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String res = getResultData();
Toast.makeText(context, "RCVR 2.."+res, 0).show();
}
}

Broadcast Receiver
File name : Receiver3.java

package com.techpalle.b15_rectypes;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.widget.Toast;

public class Receiver3 extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, "RCVR 3", 0).show();
//abortBroadcast();
setResultData("Hey..");
}
}

Manifest file
File name : AndroidManifest.xml


  
package="com.techpalle.b15_rectypes"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="17" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.techpalle.b15_rectypes.MainActivity"
android:label="@string/app_name" >























Download complete code : Click to download

Android interview questions on Ordered broadcast receivers:
Difference between Normal broadcast, ordered broadcast, and sticky broadcast?

Tags: android, ordered, broadcast receivers, priority

Older Posts Home