Mars视频笔记——AppWidget(2)基础交互

 

AppWidget(2)控件监听器绑定

什么是PendingIntent

PendingIntent创建之后并不马上使用 PendingIntent将实际Intent包裹其中

AppWidget和应用程序运行在2个进程中

进程A将PendingIntent交给进程B 当B中发生某事件 则其中的Intent被执行

 

创建PendingIntent的方法 (PendingIntent类的静态方法)

1 getActivity(...)

2 getBroadcast(...)

3 getService(...)

RemoteViews的作用

RemoteViews对象表示了一系列的View对象(非应用程序同一进程的)

RemoteViews所表示的对象运行在另外的进程当中

AppWidget对于Activity就是一个RemoteViews

 

在AppWidget中使用控件

在ApppWidget中添加控件 例如一个Button 在layout中声明

为Button绑定处理器

AppWidget和应用程序不在同一进程中 要用:

remoteViews.setOnClickPendingIntent(R.id.widgetButtonId,pendingIntent);

 

主要在onUpdate方法中 其中有一个参数int[] appWidgetId 是桌面上创建的widget

 

	// 1 创建一个Intent
	Intent intent = new Intent(context,TargetActivity.class);
	// 2 创建一个PendingIntent
	PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
	// 3 得到RemoteViews
	RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.example_appwidget);
	// 4 设置事件 绑定处理器 第一个参数是被绑定处理器控件的ID 第二个为动作
	remoteViews.setOnClickPendingIntent(R.id.widgetButtonId, pendingIntent);
	// 5 更新AppWidget 第一个参数指定更新哪一个 第二个参数为更新的控件
	appWidgetManager.updateAppWidget(appWidgetIds[i],remoteViews);
 

 

最终实现的是AppWidget上点击一个Button 跳转到TargetActivity

 

你可能感兴趣的:(android,widget)