I have created a simple Broadcast Receiver and it working absolutely fine except that if i turned on/off the Air Plane Mode, it is taking nearly 2 minutes to receive the broadcasted messages using onReceive method. Another thing is only this is causing a problem if we launch the application and then if i change Air plane Mode (on/off), Then it taking too long to receive the message.
If there is Mode change before launching the application it didn't affect the time to receive the message in onReceive method.
Source code is below.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcastreceiver"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.broadcastreceiver.BroadcastReceiverActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="MyBroadcastReceiver" >
<intent-filter>
<action android:name="test.intent.action.QR_CODE_RECEIVER" />
</intent-filter>
</receiver>
</application>
</manifest>
BroadcastReceiverActivity.java
public class BroadcastReceiverActivity extends Activity {
public static String qrCodeReceiver = "test.intent.action.QR_CODE_RECEIVER";
@Override
protected void onCreate(Bundle saveInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button broadcastBtn = (Button) findViewById(R.id.broadcastBtn);
broadcastBtn.setOnClickListener(new View.onClickListener(){
public void onClick(View v){
//TODO
Intent intent = new Intent();
intent.putExtra("message","Testing");
intent.setAction(qrCodeReceiver);
sendBroadcast(intent);
Log.d("Test","sendBroadcasting the message ::");
}
});
}
}
MyBroadcastReceiver.java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//TODO
Toast.makeText(context, "on receive.",Toast.LENGTH_LONG).show();
Bundle extras = intent.getExtras();
String state = extras.getString("message");
Log.d("Test", "Inside MyBroadcastReceiver onReceive() state :: "+ state);
Toast.makeText(context, state,Toast.LENGTH_LONG).show();
}
}
main.xml
<RelativeLayout 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: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=".BroadcastReceiverActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/broadcastBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="48dp"
android:text="Send The BroadCast Message" />
</RelativeLayout>
Thank you in advance.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…