当前位置: 网学 > 编程文档 > Android > 正文

Widget与service利用BroadcastReceiver通信

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式

Widget与service通信一直是个难点,在网上发现一位仁兄的方法不错,特来分享:

AppWidgetProvider中要注册intent主要是为了处理点击事件,或者是更新widgets中的数据,接受来自应用中数据的改变消息。

通常我们会创建一个Service,在Service中注册,处理intent.下面的注册,接收时间改变的消息

public class WidgetService extends Service{
 private WidgetsProvider mAppWidgetProvider = WidgetsProvider .getInstance();//widgets事例

 private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {//广播消息的处理
        @Override
        public void onReceive(Context context, Intent intent) {
            if(Intent.ACTION_TIMEZONE_CHANGED.equals(intent.getAction())||Intent.ACTION_TIME_TICK.equals(intent.getAction())||Intent.ACTION_TIME_CHANGED.equals(intent.getAction()))
            {
               notifyChange(Intent.ACTION_TIMEZONE_CHANGED);         
            }
        }
    };
    @Override
    public void onCreate() {
        super.onCreate();

        //消息的注册
        IntentFilter commandFilter = new IntentFilter();
        commandFilter.addAction(Intent.ACTION_TIME_TICK);
        commandFilter.addAction(Intent.ACTION_TIME_CHANGED);
        commandFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
        getBaseContext().registerReceiver(mIntentReceiver, commandFilter);
    }
    @Override
    public void onDestroy() {

        //注销

        unregisterReceiver(mIntentReceiver);
        super.onDestroy();
    }
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    private void notifyChange(String what) {
        mAppWidgetProvider.notifyChange(this, what);//widgets中消息的处理
    }
    @Override
    public void onStart(Intent intent, int startId) {
     }
}

  由于service是要通过事件来启动,我们通常是在点击事件中来启动它,如何你在widgets中想程序启动就启动service你需要这样做:

 Intent mrunningService = new Intent(context, WorldClockWidgetService.class);
        // To prevent any ANR timeouts, we perfo

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号