`
zhanglibin1986
  • 浏览: 382995 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Widget的救命稻草 Service

阅读更多
Widget的救命稻草 Service



Appwidget的贫弱 不仅仅是在已经被我们无奈的布局上。appWidget还被Android做了很多限制,甚至Widget不能调用线程!



如果你要在AppwidgetProvider里面写东西,你所能调用的资源相当有限。



我感觉apwidget像是寄生在Home程序中的,所以也受相应的很多限制。我们的经验告诉我们,除了在RemoteViews中方一些固定的东西,不要指望你的widget能自己做什么,最好的方法是让他当一个被动接受的傀儡。



既然Widget成了傀儡了,那么我们就应该把更多的事务交给别人。Service就是个很好的选择,他可以让Widget重焕生机。



其实Service 是Activity还有Appwidget都可以调用的东西。而且他也有很高的灵活度。



而且更加重要的是,你甚至可以存在于你的Widget里面作为一个内部类。因为Service占用了进程,他可以完成很多Widget无法做到的事情。



Service在做好了自己的工作以后,可以用广播的形式发送给Widget,因为appWidgetManager可以在Widget之外调用,那么我们完全可以在Service里面控制Widget的更新。



Widget的接受方法解释使用BroadcastReceiver原声的继承方法,在本篇调用系统时钟那个例子就很好的讲述了这个方法。



6. 从Widget逃出来的信息



如果什么事情都让别人来做,也不好,appwidget虽然被限制很多,但是我们还是有办法从Widget分出点东西来。RemoteViews给我们提供了原生的 setOnClickPendingIntent方法。



PendingIntent这个想必大家都应该很清楚。因为RemoteViews没有按键时间,所以这个方法就可以出发PendingIntent。



而Widget的点击事件很有特点,之前点击我们Activity的控件,会有专门的按键监听,他会根据案件的ID,来控制按键范围,比如你的ImageViewButton的id 是 R.id.imagebutton。

在下面你只要引入将这个id,按钮事件发出只会在你点击这个区域以后才会发生。



下面这个例子就是点击整个Widget的时候会触发时间。



                 updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_word);



                 updateViews.setOnClickPendingIntent(R.id.widget, pendingIntent);



PendingIntent被出发后,发出信息,所以送出送出的消息全部在Intent里面。



至于Android上的传值,大家可以去这个地址来学习一下。

http://www.eoeandroid.com/viewthread.php?tid=967&extra=page%3D1

我觉得我讲的还算是很明白的。



PendingIntent提供了三种方法,一个事getActivity()另一个是getBroadcast()最后一个事getService()



从字面上我们就可以看出这三种方法是启动一个新的Activity、发送一个广播、还有启动一个服务。getService启动的服务如果已经启动了,执行这个语句将会保持服务的运行。
分享到:
评论

相关推荐

    appWidget启动Service

    将AppWidget与Service结合使用,可以实现从桌面小部件触发后台服务进行特定任务,如定时更新、远程控制等功能。 **AppWidget启动Service** 1. **创建AppWidget**: 首先,你需要创建一个AppWidget,定义其布局和...

    App Widget通过service定时更新源码

    自己改的一个App Widget通过service和定时器实现定时更新的源码,自己改的一个App Widget通过service和定时器实现定时更新的源码,自己改的一个App Widget通过service和定时器实现定时更新的源码

    AppWidget案例

    5. **Service**:如果需要,可以创建一个Service来处理Widget的后台任务。 在"WidgetDome"这个文件中,很可能包含了实现上述功能的代码示例,包括AppWidgetProvider的实现、RemoteViews的使用、Service的配置以及主...

    andriod的一个桌面Widget 一个MP3播放器

    涉及到了,一个基本的widget程序的大部分知识点,包括widget和service如何交换数据,service如何利用RemoteView来控制widget上的组件更新。 网上查了不少资料,才写了一个Demo,欢迎下载哈。。。

    Android的widget使用listview布局

    接下来,定义IntentService `WidgetService`,它将处理来自Widget的数据请求。在`onHandleIntent()`方法中,获取数据并调用`getitemProvider()`,返回适配器实例。 ```java public class WidgetService extends ...

    Widget

    Widget在IT领域中通常指的是GUI(图形用户界面)中的一个小部件或者组件,它是一个可交互的元素,如按钮、滑块、复选框、单选按钮、文本框等。Widgets是构建用户界面的基础,允许用户与应用程序进行交互,执行各种...

    widget

    **Widget技术概述** Widget在IT领域中通常指的是小型应用程序或组件,它们可以在各种操作系统或平台上运行,提供便捷的功能访问或信息展示。Widget开发是构建用户界面(UI)和增强用户体验的重要部分,尤其在移动...

    widget现状分析报告(移动widget)

    【标题】:移动Widget现状分析报告 【摘要】: 移动Widget是互联网技术发展下的产物,是一种小型的应用程序,可在各种平台上展示个性化信息。本报告旨在分析当前移动Widget的市场状况,探讨其起源和发展历程,以及...

    appWidget启动Activity

    在Android开发中,`appWidget` 是一种可以在用户主屏幕上显示的小部件,它提供了一种无需打开应用程序就能与用户交互的方式。本篇文章将深入探讨如何使用`appWidget`来启动一个`Activity`。 首先,我们需要了解`app...

    android widget

    - **服务(Service)**:如果Widget需要持续运行的后台任务,可能需要结合Service使用,例如获取网络数据。 在`02_07_ppt.jpg`中,可能包含的是关于Widget设计和使用技巧的PPT,涵盖了如何优化用户体验、提高Widget...

    Android Widget组件开发

    ServiceWidget则涉及到Widget与服务(Service)的交互。在Android中,Service是一种在后台运行的组件,用于执行长时间的操作,如播放音乐或同步数据。ServiceWidget常用于需要持续更新或者后台操作的Widget,比如...

    android appwidget 经典完整代码

    3. **服务(Service)**:如果AppWidget需要后台处理或定时更新,可以使用服务来处理这些任务。例如,通过AlarmManager定期更新AppWidget的状态。 4. **Intent**:用于在AppWidget与应用的其他部分之间传递信息。 ...

    Widget 闹钟android实现

    当用户设定好闹钟时间后,将这个时间传递给AlarmManager,让它在指定时间触发一个PendingIntent,这个PendingIntent可以启动一个Service或BroadcastReceiver来执行闹钟提醒。 6. **通知用户**: - 当闹钟触发时,...

    Qt5以上动态添加子widget

    在Qt框架中,动态添加子Widget是一项常见的任务,特别是在创建可扩展或自适应用户界面时。Qt5及以上版本提供了丰富的API来实现这一功能。本文将深入探讨如何在Qt5及更高版本中动态地向父Widget添加子Widget,以及...

    widget定时更新

    "Widget定时更新"这个主题聚焦于如何通过Service组件来实现在后台定期更新Widget的内容,特别是更新图片,这是Android Widget功能的一个常见需求。 首先,我们来理解Widget和Service的基本概念。Widget是Android...

    widget 介绍:比较全面介绍widget由来的资料

    【Widget的介绍与详解】 Widget,这个词源自英语,是一个通用术语,用来描述各种小型应用程序或组件,它们可以在不同平台上以小窗口或小框的形式呈现,为用户提供便捷的功能或信息展示。Widget广泛应用于网页、系统...

    android_service

    通过启动Service处理长时间任务,绑定Service进行双向通信,以及合理利用Widget与Service的交互,开发者可以创建功能丰富的Android应用。在实际开发中,务必注意Service的生命周期管理和资源管理,以提高应用的性能...

    Android App Widget 开发

    Android App Widget是Android系统提供的一种轻量级的UI组件,允许开发者在用户的主屏幕上放置一些交互式的快捷方式或小部件,提供类似于桌面小工具的功能。这些小部件可以显示实时信息,如天气、日历事件、音乐播放...

    android widget源码

    8. **服务(Service)**: 虽然Widget本身不运行在Service中,但Service可以用来处理耗时的任务,如定期更新Widget内容。可以创建一个IntentService,通过AlarmManager定时唤醒,以避免频繁唤醒应用导致电池消耗过大...

Global site tag (gtag.js) - Google Analytics