Android Service和广播

来源:互联网 发布:大数据存储和处理 编辑:程序博客网 时间:2024/06/05 16:13

在学习Service和广播的时候遇到一点小问题,在此记下:

需求:我们经常需要去调用service的方法或取service某个状态的值。这时需要service和客户端之间的通信。启动方式:startService(context,service)

问题:在service中启动一个线程,不断更新count变量的数值(每隔1秒钟加1),在Activity客户端编写一个Broadcast,获得该count的值。在service端,传递数据的intent如下:

Intent intent = new Intent();

intent.addAction(broadcast的action);

intent.intent.putExtra("count", count);

sendBroadcast(intent);

在Broadcast端接收数据如下:

int count= intent.getIntExtra("count",-1);

结果报如下错误:

03-27 06:40:17.556: E/AndroidRuntime(587): java.lang.RuntimeException: Error receiving broadcast Intent { act=com.gem.action.Receiver_Action (has extras) } in com.gem.broadcastservice.BroadcastAndServiceActivity$ClientReceiver@4051af38


解决问题:经测试发现带字符串可以带过去,带整数就带不过去。把代码改成如下则可以:

在service端,传递数据的intent如下:

Intent intent = new Intent();

intent.addAction(broadcast的action);

intent.intent.putExtra("count", count+"");

sendBroadcast(intent);

在Broadcast端接收数据如下:

int count = intent.getStringExtra("count");

环境是:Android2.3.3。




原创粉丝点击