Widget小结
Widget小结
孤峰无悔 发表于1年前
Widget小结
  • 发表于 1年前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

public class AppWidgetProvider extends BroadcastReceiver

查看源码可知 Widget 其实是一个特殊的广播接受者

1.创建一个类继承AppWidgetProvider

public class MyWidget extends AppWidgetProvider {

}

2.Widget就是一个广播接收者,所以在清单文件中进行配置

<receiver android:name="com.itheima.widget.MyWidget" >
     <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>

android:name 处配置全类名

android:resource 处配置一个Widget的描述文件

3.描述文件

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/test" //布局文件
    android:minHeight="40dp"                
    android:minWidth="40dp"
    android:updatePeriodMillis="86400000" >
</appwidget-provider>

4.生命周期

1.onEnable():第一次widget被创建,初始化工作

2.onDisable():最后一个widget被销毁的时候,擦屁股工作

3.onUpdate():每当widget被创建的时候,以及updatePeriodMillis时间到的时候

4.onDelete():每当widget被删除的时候调用

5.onAppWidgetOptionsChanged():当widget被改变大小

6.onReceive():其他是声明周期事件都是通过onReceive分发的

5.Widget的点击事件

PendingIntent:延期的意图,是让另外一个应用程序帮我们执行的意图,相当于一个回调。当满足某些条件后,可以通过PendingIntent打开Activity、Service或者发送广播

//自定义的广播消息。
Intent intent = new Intent();
intent.setAction("com.liangfeng.mobilesafe.killall");
PendingIntent pendingIntent = PendingIntent.getBroadcast(
        UpdateWidgetService.this, 0, intent,
        PendingIntent.FLAG_UPDATE_CURRENT);
//给按钮注册一个点击事件,事件是一个延期的意图
views.setOnClickPendingIntent(R.id.btn_clear, pendingIntent);
共有 人打赏支持
粉丝 2
博文 22
码字总数 8266
×
孤峰无悔
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: