onReceive方法(onreceive函数)

http://www.itjxue.com  2023-02-24 19:03  来源:未知  点击次数: 

onReceive(Context context, Intent intent)方法的两个参数是什么意思?

发送广播时:

Intent intent = new Intent(BROADCAST_COUNTER_ACTION);

intent.putExtra(COUNTER_VALUE, counter);

context.sendBroadcast(intent);

onReceive(Context context, Intent intent)的context与intent就是发送广播时的这个context和intent

Android中定义了一个接收短信的广播类,但是里面的OnReceive方法始终没有执行,求解

虽然我眼拙没有看出什么不对劲,网上博文写的基本也如此,但也有点心得:

从短信接收后系统发出广播,虽然是异步广播,但是实际上到你写的接收器接收到并处理之间可能会有一段较长的时间,可能是几秒;

先检查接收器是否注册成功。

Android 怎么在onReceive方法中再发一条广播

起一个线程,每发一个广播后就sleep一分钟,如此循环。(或者接受系统的timechanged这个广播,这个广播好像一分钟发一次)。

Android 在发送广播时的方法 sendBroadcast(Intent)。

①:Intent myIntent = new Intent();——【创建Intent对象】

②:myIntent.setAction(String)——【设置一般的要执行的动作。参数:动作一个动作的名称,如ACTION_VIEW。应用程序的具体行动,应与供应商的包名作为前缀。】

③:myIntent.putExtra(String,Object)——【广播中额外发送的数据,String为自定义key,Object表示多种数据类型】

④:sendBroadcast(myIntent);——【发送广播】

接收广播

Android在接收广播的方法是注册一个广播接收器 registerReceiver(MyReceiver,IntentFilter)。

①:首先创建MyReceiver类(类名自定义) 继承 BroadcastReceiver类。——【创建广播接收器】

②:在MyReceiver中重写public void onReceive(Context context, Intent intent)方法。这个方法在接收到广播后触发。——【重写处理方法】

③:在Activity或者Service启动时 onCreate()、onStartCommand()等方法中实例化 MyReceiver类——【启动时实例化广播接收器】

④:IntentFilter filter = new IntentFilter();——【创建IntentFilter对象 意图过滤器】

⑤:filter.addAction(String);——【在过滤器中加入过滤条件,说明接收什么广播】

⑥:registerReceiver(cmdReceiver, filter);——【注册广播,参数为(广播接收器,意图过滤器)】

OnReceive()怎么用,应写在那里?

首先Service、Broadcast Receiver、Content Provider都是运行在UI线程,或者说主线程中的,就是启动一个Activity时开始运行的那个进程。但是Broadcast Receiver不像Service,生命周期较短,耗时操作你不能在onReceive中执行的,比如你试试在其中启动一个对话框看看,会报错的。可能是这个原因导致你加上延迟后没有更新文字。还有,要加上执行完调用timer.cancel();结束任务。如果简单的想五秒后执行,直接用Thread,在run方法中sleep(5000);就可以了。代码如下:

new Thread(){

@Override

public void run() {

super.run();

try {

sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

String text="";

ListString config = loadArray();

for(int i=0;iconfig.size();i++){

//am.killBackgroundProcesses(config.get(i));

text+=config.get(i)+"\n\r";

}

text+="off";

tv_show.setText(text);

}

}.start();

直接加到onReceive方法中就行了。

(责任编辑:IT教学网)

更多

推荐其它软件文章