哪些年遇到过的Andriod问题(15)注册广播服务,如果你看过MARS老师的视频,还是不算了吧,这是纯COPY的

本文详细介绍了在Android应用中如何通过两种方式注册并使用广播服务:一种是在AndroidManifest.xml文件中全局注册,另一种是在程序中动态注册与卸载。包括编写广播接收者类、发送广播以及接收广播的具体实现步骤。

1)     注册广播服务

有二种方式:

u  在“AndroidManifest.xml”文件注册,这种方法是全局的,主程序只要启动了这种服务,就算是关闭了注册了的广播服务也会在手机后台一直运行。(有点像一个间谍服务)

 

       AndroidManifest.xml文件中写入

<application android:icon="@drawable/icon"android:label="@string/app_name">

              …

              <receiverandroid:name=".TestReceiver">

                     <intent-filter>

                            <actionandroid:name="android.intent.action.PICK" />

                     </intent-filter>

              </receiver>

       </application>

       <uses-permissionandroid:name="android.permission.RECEIVE_SMS"></uses-permission>

 

       写一个广播类

public classTestReceiver extends BroadcastReceiver{

       public TestReceiver(){          System.out.println("TestReceiver");      }

       @Override

       public void onReceive(Context context,Intent intent) {

              //这可以做收到信息后要做的事情

System.out.println("onReceive");

       }

}

 

       调用广播类

    class BroadcastListener implementsOnClickListener{

              @Override

              public void onClick(View v) {

                     Intent intent = newIntent();

                     intent.setAction(Intent.ACTION_EDIT);

                     TestActivity.this.sendBroadcast(intent);

              }        

    }

u  在程序中注册/卸载广播服务

       AndroidManifest.xml文件中写入

<application android:icon="@drawable/icon"android:label="@string/app_name">

              …

       </application>

       <uses-permissionandroid:name="android.permission.RECEIVE_SMS"></uses-permission>

 

       写一个广播类

public classSMSReceiver extends BroadcastReceiver{

       @Override

       public void onReceive(Context context,Intent intent) {     

              //接受Intent对象当中的数据

              Bundle bundle =intent.getExtras();

              //在Bundle对象当中有一个属性名为pdus,这个属性的值是一个Object数组

              Object[]myOBJpdus = (Object[]) bundle.get("pdus");

              //创建一个SmsMessage类型的数组

        SmsMessage[] messages = newSmsMessage[myOBJpdus.length]; 

       

        for (int i = 0; i<myOBJpdus.length;i++)

        { 

          //使用Object数组当中的对象创建SmsMessage对象

          messages[i] =SmsMessage.createFromPdu((byte[]) myOBJpdus[i]); 

          //调用SmsMessage对象的getDisppalyMessageBody()方法,就可以得到消息的内容

         System.out.println(messages[i].getDisplayMessageBody());

        }

       }

}

       调用广播类

       private static final String SMS_ACTION ="android.provider.Telephony.SMS_RECEIVED";

    class RegisterReceiverListener implementsOnClickListener{

              @Override

              public void onClick(View v) {                   

                     smsReceiver = newSMSReceiver();//生成一个BroiadcastReceiver对象

                     IntentFilter filter = newIntentFilter();//生成一个IntentFilter对象

                     filter.addAction(SMS_ACTION);//为IntentFilter添加一个Action

                     //将BroadcastReceiver对象注册到系统当中

                     TestBC2Activity.this.registerReceiver(smsReceiver,filter);

              }

    }

   

    class UnRegisterReceiverListener implementsOnClickListener{

              @Override

              public void onClick(View v) {

                     //解除BroadcastReceiver对象的注册

                     TestBC2Activity.this.unregisterReceiver(smsReceiver);

              }

    }

(Kriging_NSGA2)克里金模型结合多目标遗传算法求最优因变量及对应的最佳自变量组合研究(Matlab代码实现)内容概要:本文介绍了克里金模型(Kriging)与多目标遗传算法NSGA-II相结合的方法,用于求解最优因变量及其对应的最佳自变量组合,并提供了完整的Matlab代码实现。该方法首先利用克里金模型构建高精度的代理模型,逼近复杂的非线性系统响应,减少计算成本;随后结合NSGA-II算法进行多目标优化,搜索帕累托前沿解集,从而获得多个最优折衷方案。文中详细阐述了代理模型构建、算法集成流程及参数设置,适用于工程设计、参数反演等复杂优化问题。此外,文档还展示了该方法在SCI一区论文中的复现应用,体现了其科学性与实用性。; 适合人群:具备一定Matlab编程基础,熟悉优化算法和数值建模的研究生、科研人员及工程技术人员,尤其适合从事仿真优化、实验设计、代理模型研究的相关领域工作者。; 使用场景及目标:①解决高计算成本的多目标优化问题,通过代理模型降低仿真次数;②在无法解析求导或函数高度非线性的情况下寻找最优变量组合;③复现SCI高水平论文中的优化方法,提升科研可信度与效率;④应用于工程设计、能源系统调度、智能制造等需参数优化的实际场景。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现过程,重点关注克里金模型的构建步骤与NSGA-II的集成方式,建议自行调整测试函数或实际案例验证算法性能,并配合YALMIP等工具包扩展优化求解能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值