Widget创建过程

Android AppWidget开发详解:组件构建与生命周期管理

依照android文档
http://www.android-doc.com/guide/topics/appwidgets/index.html

1.写一个类继承MyWidget AppWidgetProvider 并且在清单文件中注册

<receiver android:name="ExampleAppWidgetProvider" >
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
    <meta-data android:name="android.appwidget.provider"
               android:resource="@xml/example_appwidget_info" />
</receiver>

其中resource为xml的配置文件

2.新建文件夹xml 创建example_appwidget_info.xml


<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"  //最小宽度
    android:minHeight="72dp"  // 最小高度
    android:updatePeriodMillis="86400000"  //更新间隔时间(毫秒值) 每隔24小时一更新,最短半个小时
    android:previewImage="@drawable/preview" // 预览图片 默认是logo
    android:initialLayout="@layout/example_appwidget"  //初始化布局文件
    android:configure="com.example.android.ExampleAppWidgetConfigure"  // 配置页面 点击进入的页面
    android:resizeMode="horizontal|vertical">  // 缩放方式
    android:widgetCategory="home_screen|keyguard" //支持类型  keyguard锁屏页面 4.2以上支持
    android:initialKeyguardLayout="@layout/***" // 锁屏窗口的布局 4.2以上支持
</appwidget-provider>

项目中一般使用一下几个即可

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"  //最小宽度
    android:minHeight="72dp"  // 最小高度
    android:updatePeriodMillis="0" 
    android:initialLayout="@layout/example_appwidget"  //初始化布局文件
</appwidget-provider>

其中android:updatePeriodMillis=”0”
更新时间如果为半个小时肯定不能达到目的
在后台起一个服务 定时器每个指定时间更新一下widget

3.widget 生命周期

OnReceive() //所以声明周期被调用后都会调用一下  
        OnEnabled() //第一个widget被创建时调用
    OnUpdate() // 当新增widget时调用 自动更新时调用
        OnDeleted() // widget被删除时调用
        OnDisabled() // 最后一个widget被移除时调用
        OnAppWidgetOptionsChanged() //widget宽高发生变化时

4.
写一个服务 并在清单文件中配置
onCreate()
onDestroy()
在桌面有widget时启动服务 在Widget的OnEnabled方法中启动服务 为了防止服务被杀死可yi在
OnUpdate()中也启动服务 服务多次启动不会造成任何影响
在disDabled中停止服务
在服务中更新Widget
用AppWidgetManager.updateAppWidget()
widget增加点击事件
setOnClickPendingIntent()
监听屏幕关闭 开启或关闭定时器

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值