Android的Launcher启动器中添加快捷方式及小部件实例

2019-12-10 18:54:46王旭

2、Android 桌面组件【widget】初探

PS: 具体代码可在后面下载 。

再次强调一点,每个AppWidget都对应与AppWidgetProvider , 我们需要同步更新这些AppWidget对象。
在自己的应用程序中添加窗口小部件
本部分的主要功能是像Launchcer那样添加AppWidget 。 知识点介绍如下:

AppWidgetHost 类

功能:对每个应用程序App,该类提供了和AppWidgetService(该AppWidgetService用来管理所有AppWidget,类似于
NotificationManagerService系统服务管理所有Notifciation,不懂?其实我也不懂,知其大意即可)交互,用来更新、管理
AppWidget。打个比喻:AppWidgetHost是宿主对象,每个AppWidget都是寄生虫,可以附加在(显示)AppWidgetHost上。
每个能添加、显示AppWidget的Activity都是一个AppWidgetHost对象,比如Launcher.java(Activity对象),以及我们后面自定
义的MainActivity.java(Activity对象)。

常用方法为:
public AppWidgetHost(Context context, int hostId)
功能:构造一个AppWidgetHost对象
参数:  hostId   大意是该AppWidgetHost(宿主对象)对应的Id号,一般赋予一整数即可。 
public int allocateAppWidgetId()
功能:申请一个新的appWidgetId ,该id会与新创建的AppWidget绑定。
public void startListening()
功能:监听所有AppWidget的变化 ,该方法必须在Activity的onCreate()/onStart()调用,否则 AppWidget是不会得到更新的
public void stopListening()
功能: 对应于startListening(),即停止对AppWidget的更新监听。可以在Activity的onStop()方法里调用 ,
一般无需调用此方法去停止监听。

public final  AppWidgetHostView    createView(Context context, int appWidgetId, AppWidgetProviderInfo appWidget) 
功能: 根据指定的appWidgetId以及AppWidgetProviderInfo对象去构建一个AppWidgetHostView对象(具体该对象,
参见下 文)。


AppWidgetHostView 与 RemoteViews的区别

对每个AppWidget内部而言,都有一个RemoteViews对象,用于视图显示;而对于外部而已,则以AppWidgetHostView形式代言 这个RemoteViews视图。换句话来说就是,AppWidgetHost对象而言,它并不知道RemoteViews存在,而只是RemoteViews 的代言人AppWidgetHostView。


好了 ,该说明的都说明了,下面最后给大家补充一下如何利用在自己的应用程序里添加窗口小部件(AppWidget) 。