Android例子—Widget的简单使用介绍

本文介绍了Android Widget的开发步骤,包括创建AppWidgetProvider、清单文件注册、配置XML、设计布局以及通过Service更新数据。详细讲解了如何使用Service和PendingIntent来确保Widget的更新,并讨论了解决Service被系统kill的问题,提供了START_STICKY和ACTION_TIME_TICK广播监听两种策略。
摘要由CSDN通过智能技术生成

Widget是安卓的一个桌面小工具组件—窗口小部件,是微型应用程序视图,可以嵌入到其他应用程序(如主屏幕)和接收定期更新。

一 介绍

AppWidgetProvider是Android中提供的用于实现桌面小工具的类,其本质是一个广播,即BroadcastReceiver。下面是类的继承关系。
这里写图片描述
所以,在实际的使用中,把AppWidgetProvider当成一个BroadcastReceiver就可以了,这样许多功能就很好理解了。

二 开发一个桌面小工具的步骤

  1. 创建一个类继承 AppWidgetProvider 并重写相应方法 默认实现了onReceive 方法。
  2. 在清单文件进行注册。
  3. 在res目录下新建xml文件夹 配置widget相关信息。
  4. 创建widget展示布局。
  5. 创建widget的配置文件(可选)。
  6. 更新数据。

大概就是上述的一些步骤。如果在添加的widget之前需要进行一些配置 则需要实现第5步。

第一步:创建类继承AppWidgetProvider

public class MyWidget extends AppWidgetProvider {
   

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
    }

    /**
     * 第一个widget被添加调用
     * @param context
     */
    @Override
    public void onEnabled(Context context) {
        super.onEnabled(context);

        context.startService(new Intent(context, WidgetService.class));

    }

    /**
     * widget被添加 || 更新时调用
     * @param context
     */
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        context.startService(new Intent(context, WidgetService.class));
    }

    /**
     * 最后一个widget被删除时调用
     * @param context
     */
    @Override
    public void onDisabled(Context context) {
        super.onDisabled(context);
        context.stopService(new Intent(context, WidgetService.class));
    }

    /**
     * widget被删除时调用
     * @param context
     * @param appWidgetIds
     */
    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        super.onDeleted(context, appWidgetIds);
    }

}

第二步:清单文件注册

        <receiver android:name=".MyWidget">

            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data android:name="android.appwidget.provi
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值