android – 在飞机模式关闭打开后,广播接收器在onReceive()中接收的时间太长

android – 在飞机模式关闭打开后,广播接收器在onReceive()中接收的时间太长,第1张

概述我创建了一个简单的广播接收,它工作得很好,除非我打开/关闭空中飞机模式,使用onReceive方法接收广播消息需要将近2分钟.另一件事是,如果我们启动应用程序然后如果我更改Air plane模式(开/关),则会导致问题,然后接收消息需要很长时间. 如果在启动应用程序之前有模式更改,则不会影响在onReceive方法中接收消息的时间. 源代码如下. AndroidManifest.xml中 <?x 我创建了一个简单的广播接收器,它工作得很好,除非我打开/关闭空中飞机模式,使用onReceive方法接收广播消息需要将近2分钟.另一件事是,如果我们启动应用程序然后如果我更改Air plane模式(开/关),则会导致问题,然后接收消息需要很长时间.

如果在启动应用程序之前有模式更改,则不会影响在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()中接收的时间太长所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1131114.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存