
如果在启动应用程序之前有模式更改,则不会影响在onReceive方法中接收消息的时间.
源代码如下.
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>
先感谢您.
解决方法 在AndroID系统中,广播在内部处理.有时,由于系统加载/重启/高运行时间,广播接收器有时间接收一些意图
解决方法是,将Flag FLAG_RECEIVER_FOREGROUND添加到意图发送广播
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
这将在问题情景中比以前更快地加速广播传送
总结以上是内存溢出为你收集整理的android – 在飞机模式关闭/打开后,广播接收器在onReceive()中接收的时间太长全部内容,希望文章能够帮你解决android – 在飞机模式关闭/打开后,广播接收器在onReceive()中接收的时间太长所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)