onreceive(onreceive函数)

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

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方法中就行了。

android广播接收的onReceive方法不执行,即接收不到广播的消息

最大的可能是广播没有注册

1)第一种不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。(代码里注册)

2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。(androidmanifest.xml注册)

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

为什么onReceive不会执行呢?

代码好像是没什么问题,不过可以修改一下:public class Test extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { System.out.println("Screen off..................."); } }, filter);}@Overrideprotected void onResume() { super.onResume(); System.out.println("onResume()");}@Overrideprotected void onDestroy() { super.onDestroy(); System.out.println("onDestroy()");}@Overrideprotected void onPause() { super.onPause(); System.out.println("onPause()");}

Android怎么给onReceive()函数传参数

Android怎么给onReceive()函数传参数有几种解决办法

解决方案1:

该函数是系统回调函数,不是给你调用的,你需要调用sendBroadcast(Intent o)

解决方案2:

这是个广播接收器,用来接收广播的,可以通过intent来获取广播传过来的值

解决方案3:

解决方案4:

发送广播消息是通过Context.sendBroadcast(intent)

intent中附加要传递的值

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);——【注册广播,参数为(广播接收器,意图过滤器)】

(责任编辑:IT教学网)

更多
上一篇:没有了