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);

...全文
559 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里接收,但是并没有成功

80,363

社区成员

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

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