首先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=””
List<String>config = loadArray()
for(int i=0i<config.size()i++){
//am.killBackgroundProcesses(config.get(i))
text+=config.get(i)+”\n\r”
}

text+=”off”
tv_show.setText(text)
}
}.start()
直接加到onReceive方法中就行了。
为什么onReceive不会执行呢?
Android怎么给onReceive()函数传参数有几种解决办法
解决方案1:
该函数是系统回调函数,不是给你调用的,你需要调用sendBroadcast(Intent o)
解决方案2:
这是个广播接收器,用来接收广播的,可以通过intent来获取广播传过来的值
解决方案3:
解决方案4:
发送广播消息是通过Context.sendBroadcast(intent)
intent中附加要传递的值
代码好像是没什么问题,不过可以修改一下: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()”)}
以上就是关于OnReceive()怎么用,应写在那里?全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!











