Activity里接收不到广播是怎么回事

tccyl0818 2016-03-17 06:08:26
这里是发广播的


public void onBooking(View v){

switch (v.getId()){
case R.id.bookingA:
if (saNum<1){
Toast.makeText(BookingActivity.this,"座位已经坐满,不可预订!",Toast.LENGTH_LONG).show();
break;
}else {

Toast.makeText(BookingActivity.this,"预订成功!",Toast.LENGTH_LONG).show();

AsyncHttpClient client=new AsyncHttpClient();
client.post(HttpUtil.bookingSeat, AbookingInfo(), new JsonHttpResponseHandler() {

});

saNum -= 1;
break;
}

case R.id.bookingB:
if (sbNum<1){
Toast.makeText(BookingActivity.this,"座位已经坐满,不可预订!",Toast.LENGTH_LONG).show();
break;
}else {

AsyncHttpClient client1 = new AsyncHttpClient();
client1.post(HttpUtil.bookingSeat, BbookingInfo(), new JsonHttpResponseHandler() {

});

Toast.makeText(BookingActivity.this, "预订成功!", Toast.LENGTH_LONG).show();
sbNum -= 1;
break;
}

case R.id.bookingc:
if (scNum<1){
Toast.makeText(BookingActivity.this,"座位已经坐满,不可预订!",Toast.LENGTH_LONG).show();
break;
}else{
AsyncHttpClient client2=new AsyncHttpClient();
client2.post(HttpUtil.bookingSeat, CbookingInfo(), new JsonHttpResponseHandler() {

});


Toast.makeText(BookingActivity.this,"预订成功!",Toast.LENGTH_LONG).show();
scNum -= 1;
break;
}

case R.id.bookingD:
if (sdNum<1){
Toast.makeText(BookingActivity.this,"座位已经坐满,不可预订!",Toast.LENGTH_LONG).show();
break;
}else {
AsyncHttpClient client3 = new AsyncHttpClient();
client3.post(HttpUtil.bookingSeat, DbookingInfo(), new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONObject jsonObject) {
super.onSuccess(jsonObject);

}
});

Toast.makeText(BookingActivity.this, "预订成功!", Toast.LENGTH_LONG).show();
sdNum -= 1;
break;
}

}

AsyncHttpClient client1=new AsyncHttpClient();
client1.post(HttpUtil.updateSeat, ParamsSeatUpdate(), new JsonHttpResponseHandler() {

});
Intent intent=new Intent();
intent.putExtra("msg","您有一份新的预订信息!");
intent.setAction("BC_ONE");
sendBroadcast(intent);

}





这里是广播接收器


public class WelcomeRestaurantActivity extends AppCompatActivity implements View.OnClickListener{

private pageFragment pageFragment;
private seatManageFragment seatManageFragment;
private mineFragment mineFragment;
public Restaurant restaurant;
// private RadioGroup rg;
private Button page, seatManage, mine;
Integer restaurantId,saNum,sbNum,scNum,sdNum;

private RequestParams Params(){
RequestParams params=new RequestParams();
params.put("restaurantId", restaurantId.toString());
return params;
}




@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome_restaurant);

// 动态注册广播
IntentFilter intentFilter=new IntentFilter("BC_ONE");


BroadcastReceiver BC1=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String msg=intent.getStringExtra("msg");
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
};
registerReceiver(BC1,intentFilter);

...全文
558 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
摘星猿 2016-03-26
  • 打赏
  • 举报
回复
引用 19 楼 tccyl0818 的回复:
引用 17 楼 u013783167 的回复:
引用 15 楼 tccyl0818 的回复:
引用 14 楼 u013783167 的回复:
首先确定 广播接收者是否已经成功注册并 运行 比如 你注册广播接收器的 界面已经运行 并且执行了 注册。 二:在发送广播时 注册广播接收器 是否 在运行中。 看了下 上面的评论 大致 是 你用2个终端 来跨终端 监听 这怎么可能呢 广播接收者 只能是同一个终端内进行。
那应该使用什么方法,来实现我这个功能呢,就是类似于顾客端点菜后,餐厅端收到菜单消息
你这个需求肯定是需要服务器支持的 你客户端只负责 下单 下单完成 由服务器 推送消息到 餐厅端 或者 服务器 就是餐厅端。光靠客户端是实现不了的。
再请教一下,应为我用的是AsyncTascHttpClient这个框架,所以数据更新到后台后,也要客户端请求后才能把消息传送过去,这样就做不到,客户点一下按钮,餐厅就收到消息了,还要在餐厅的那个代码里添加请求
实际上就是要做了 一推送功能 就是一旦有人点餐 餐厅就要收这个 订单消息 。移动端来说 就是推送功能PC端应该还是比较好实现的。
tccyl0818 2016-03-24
  • 打赏
  • 举报
回复
引用 17 楼 u013783167 的回复:
引用 15 楼 tccyl0818 的回复:
引用 14 楼 u013783167 的回复:
首先确定 广播接收者是否已经成功注册并 运行 比如 你注册广播接收器的 界面已经运行 并且执行了 注册。 二:在发送广播时 注册广播接收器 是否 在运行中。 看了下 上面的评论 大致 是 你用2个终端 来跨终端 监听 这怎么可能呢 广播接收者 只能是同一个终端内进行。
那应该使用什么方法,来实现我这个功能呢,就是类似于顾客端点菜后,餐厅端收到菜单消息
你这个需求肯定是需要服务器支持的 你客户端只负责 下单 下单完成 由服务器 推送消息到 餐厅端 或者 服务器 就是餐厅端。光靠客户端是实现不了的。
再请教一下,应为我用的是AsyncTascHttpClient这个框架,所以数据更新到后台后,也要客户端请求后才能把消息传送过去,这样就做不到,客户点一下按钮,餐厅就收到消息了,还要在餐厅的那个代码里添加请求
摘星猿 2016-03-22
  • 打赏
  • 举报
回复
引用 15 楼 tccyl0818 的回复:
引用 14 楼 u013783167 的回复:
首先确定 广播接收者是否已经成功注册并 运行 比如 你注册广播接收器的 界面已经运行 并且执行了 注册。 二:在发送广播时 注册广播接收器 是否 在运行中。 看了下 上面的评论 大致 是 你用2个终端 来跨终端 监听 这怎么可能呢 广播接收者 只能是同一个终端内进行。
那应该使用什么方法,来实现我这个功能呢,就是类似于顾客端点菜后,餐厅端收到菜单消息
你这个需求肯定是需要服务器支持的 你客户端只负责 下单 下单完成 由服务器 推送消息到 餐厅端 或者 服务器 就是餐厅端。光靠客户端是实现不了的。
tccyl0818 2016-03-22
  • 打赏
  • 举报
回复
引用 17 楼 u013783167 的回复:
引用 15 楼 tccyl0818 的回复:
引用 14 楼 u013783167 的回复:
首先确定 广播接收者是否已经成功注册并 运行 比如 你注册广播接收器的 界面已经运行 并且执行了 注册。 二:在发送广播时 注册广播接收器 是否 在运行中。 看了下 上面的评论 大致 是 你用2个终端 来跨终端 监听 这怎么可能呢 广播接收者 只能是同一个终端内进行。
那应该使用什么方法,来实现我这个功能呢,就是类似于顾客端点菜后,餐厅端收到菜单消息
你这个需求肯定是需要服务器支持的 你客户端只负责 下单 下单完成 由服务器 推送消息到 餐厅端 或者 服务器 就是餐厅端。光靠客户端是实现不了的。
懂了,谢谢
tccyl0818 2016-03-20
  • 打赏
  • 举报
回复
引用 14 楼 u013783167 的回复:
首先确定 广播接收者是否已经成功注册并 运行 比如 你注册广播接收器的 界面已经运行 并且执行了 注册。 二:在发送广播时 注册广播接收器 是否 在运行中。 看了下 上面的评论 大致 是 你用2个终端 来跨终端 监听 这怎么可能呢 广播接收者 只能是同一个终端内进行。
那应该使用什么方法,来实现我这个功能呢,就是类似于顾客端点菜后,餐厅端收到菜单消息
wei220000 2016-03-20
  • 打赏
  • 举报
回复
建个service呗
摘星猿 2016-03-19
  • 打赏
  • 举报
回复
首先确定 广播接收者是否已经成功注册并 运行 比如 你注册广播接收器的 界面已经运行 并且执行了 注册。 二:在发送广播时 注册广播接收器 是否 在运行中。 看了下 上面的评论 大致 是 你用2个终端 来跨终端 监听 这怎么可能呢 广播接收者 只能是同一个终端内进行。
xingzhong128 2016-03-19
  • 打赏
  • 举报
回复
相同客户端不同服务器 写错了 相同app不同客户端
xingzhong128 2016-03-19
  • 打赏
  • 举报
回复
引用 10 楼 tccyl0818 的回复:
[quote=引用 8 楼 ganshenml 的回复:] [quote=引用 5 楼 tccyl0818 的回复:] [quote=引用 4 楼 lj19851227 的回复:] 把动态注册监听改到AndroidManifest.xml相应的WelcomeRestaurantActivity activity声明里面去试试,你现在的方法只有WelcomeRestaurantActivity这个activity启动过才会注册监听,如果你的onBooking()按钮是唯一启动的入口,那你肯定走不到动态注册的逻辑,也就没办法监听到了。
我是打开两个模拟器,一个在停留WelcomRestauranActivity上,一个在执行onBooking()[/quote] 两个模拟器是单独的吧? 按照4楼的说法,WelcomeRestaurantActivity  这个Activity都没有单独启动,那么动态注册的Receiver方法也没有初始化执行,当然广播传递不到这里。先可以把Receiver单独出来试试![/quote] 就是同一个APP,不同客户端,怎么传递和接收广播[/quote] 相同客户端不同服务器就要用到推送功能,网上有不少android的推送服务平台,推荐你用极光推送服务,他们可以提供免费推送,而且有相对应的开发文档,需要你自己看了,到网上搜下极光推送
ganshenml 2016-03-18
  • 打赏
  • 举报
回复
引用 5 楼 tccyl0818 的回复:
[quote=引用 4 楼 lj19851227 的回复:] 把动态注册监听改到AndroidManifest.xml相应的WelcomeRestaurantActivity activity声明里面去试试,你现在的方法只有WelcomeRestaurantActivity这个activity启动过才会注册监听,如果你的onBooking()按钮是唯一启动的入口,那你肯定走不到动态注册的逻辑,也就没办法监听到了。
我是打开两个模拟器,一个在停留WelcomRestauranActivity上,一个在执行onBooking()[/quote] 两个模拟器是单独的吧? 按照4楼的说法,WelcomeRestaurantActivity  这个Activity都没有单独启动,那么动态注册的Receiver方法也没有初始化执行,当然广播传递不到这里。先可以把Receiver单独出来试试!
画虎烂 2016-03-18
  • 打赏
  • 举报
回复
引用 6 楼 tccyl0818 的回复:
引用 3 楼 a631855639 的回复:
另外一个activity是否已经打开了
我是打开两个模拟器,一个在停留WelcomRestauranActivity上,一个在执行onBooking()
两个模拟。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 这就等于是哪个隔离的应用了呀
tccyl0818 2016-03-18
  • 打赏
  • 举报
回复
引用 3 楼 a631855639 的回复:
另外一个activity是否已经打开了
我是打开两个模拟器,一个在停留WelcomRestauranActivity上,一个在执行onBooking()
peter_nj_RD 2016-03-18
  • 打赏
  • 举报
回复
把动态注册监听改到AndroidManifest.xml相应的WelcomeRestaurantActivity activity声明里面去试试,你现在的方法只有WelcomeRestaurantActivity这个activity启动过才会注册监听,如果你的onBooking()按钮是唯一启动的入口,那你肯定走不到动态注册的逻辑,也就没办法监听到了。
tccyl0818 2016-03-18
  • 打赏
  • 举报
回复
引用 4 楼 lj19851227 的回复:
把动态注册监听改到AndroidManifest.xml相应的WelcomeRestaurantActivity activity声明里面去试试,你现在的方法只有WelcomeRestaurantActivity这个activity启动过才会注册监听,如果你的onBooking()按钮是唯一启动的入口,那你肯定走不到动态注册的逻辑,也就没办法监听到了。
我是打开两个模拟器,一个在停留WelcomRestauranActivity上,一个在执行onBooking()
画虎烂 2016-03-18
  • 打赏
  • 举报
回复
广播注册了吗
画虎烂 2016-03-18
  • 打赏
  • 举报
回复
另外一个activity是否已经打开了
ganshenml 2016-03-18
  • 打赏
  • 举报
回复
引用 10 楼 tccyl0818 的回复:
[quote=引用 8 楼 ganshenml 的回复:] [quote=引用 5 楼 tccyl0818 的回复:] [quote=引用 4 楼 lj19851227 的回复:] 把动态注册监听改到AndroidManifest.xml相应的WelcomeRestaurantActivity activity声明里面去试试,你现在的方法只有WelcomeRestaurantActivity这个activity启动过才会注册监听,如果你的onBooking()按钮是唯一启动的入口,那你肯定走不到动态注册的逻辑,也就没办法监听到了。
我是打开两个模拟器,一个在停留WelcomRestauranActivity上,一个在执行onBooking()[/quote] 两个模拟器是单独的吧? 按照4楼的说法,WelcomeRestaurantActivity  这个Activity都没有单独启动,那么动态注册的Receiver方法也没有初始化执行,当然广播传递不到这里。先可以把Receiver单独出来试试![/quote] 就是同一个APP,不同客户端,怎么传递和接收广播[/quote] 不同客户端涉及到进程通信了吧,这个要找熟悉的人了
tccyl0818 2016-03-18
  • 打赏
  • 举报
回复
引用 8 楼 ganshenml 的回复:
[quote=引用 5 楼 tccyl0818 的回复:] [quote=引用 4 楼 lj19851227 的回复:] 把动态注册监听改到AndroidManifest.xml相应的WelcomeRestaurantActivity activity声明里面去试试,你现在的方法只有WelcomeRestaurantActivity这个activity启动过才会注册监听,如果你的onBooking()按钮是唯一启动的入口,那你肯定走不到动态注册的逻辑,也就没办法监听到了。
我是打开两个模拟器,一个在停留WelcomRestauranActivity上,一个在执行onBooking()[/quote] 两个模拟器是单独的吧? 按照4楼的说法,WelcomeRestaurantActivity  这个Activity都没有单独启动,那么动态注册的Receiver方法也没有初始化执行,当然广播传递不到这里。先可以把Receiver单独出来试试![/quote] 就是同一个APP,不同客户端,怎么传递和接收广播
tcmakebest 2016-03-18
  • 打赏
  • 举报
回复
让隐藏的页面接收广播不太常用啊, 因为隐藏的时候一般会取消广播接收功能, 隐藏的页面重新显示的时候会调用 onResume ,这时候再显示也不迟. 通常是从服务中发送广播到当前正在前台的页面.
tccyl0818 2016-03-17
  • 打赏
  • 举报
回复
我想做的是,一旦监听到调用了onBooking()按钮,就发送一条广播,在另外一个activity里接收,但是并没有成功
       Android零基础入门这门课程的目标:带您走进Android大门,了解Android整体框架,演变发展历史 ;掌握Android编程的基础概念,教您构建各种应用程序:从Hello World开始,直到带有调度作业、更新设置、访问网络和使用架构组件的应用程序;课程结束后,能自己动手编写一定难度的Android程序,具备自学更高级开发的基础,能看懂开源的Android代码。      课程整体上分5个大的模块依次展开:      1.入门 (第1~3章)      2.用户体验(第4~6章)      3.在后台运行(第7~8章)      4.保存用户数据(第9~10章)      5.应用上架(第11章)。课程大纲如下:第1章. 构建您的第一个应用程序       1. 对Android有基本认识,搞懂Android系统整体框架,Android不同版本以及这些版本演变过程       2.以HelloWord为例,了解Android app的程序结构       3.Android UI的基础知识-视图和布局,初步介绍Android View的事件处理,及图片等资源的使用等第2章.  Activity和Intent       1.Activity 和 Intent 基础和用法       2.Activity生命周期和回调       3.Activity实例状态第3章. 测试应用 调试应用 及使用Support library       1.讲解Android两个主要的应用程序调试方法:日志 和 断点       2.如何对App进行单元测试       3.介绍Android中用于向后兼容的 Support library及用法第4章. 用户交互        讲解Android中常用控件的使用方法和注意事项,如按钮、输入控件、菜单、对话框、用户导航、列表等第5章. 令人愉快的用户体验      1.学会使用Drawables      2.使用Android studio中的图片和矢量图      3.讲解Android中主题和样式,以及如何定制主题和样式      4.Android著名的应用设计理念Material design,通过Material design打造极致的用户体验      5.如何让布局自适应不同尺寸的手机第6章. 界面测试        介绍Android UI自动化测试 Espresso第7章.后台任务        学会Android多线程编程,使用非UI线程在后台完成耗时任务,从网络存取数据。撑握Android的广播和后台服务第8章. 闹钟和调度程序       掌握Android定时任务和调度作业第9章.首选项和设置       学会使用Preferences保存用户数据,编写应用的设置界面,存取设置数据第10章.使用 Room 存储数据       学会使用Android SQLite数据库,通过Room组件对数据库增删改查,掌握LiveData和 ViewModel等架构组件第11章:App上架​     1.学会App在国内应用市场上架​     2.学会App在Google play上架课程中如果讲的不对的地方,请大家指出,我及时修正,我们共同努力,一起进步。

80,354

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧