Android 主页小部件-通过onUpdate多次注册UI事件处理程序是否效率低下
到目前为止,我看到的所有Android 主页小部件-通过onUpdate多次注册UI事件处理程序是否效率低下,android,Android,到目前为止,我看到的所有AppWidgetProvider代码示例都将UI事件处理程序寄存器代码放在onUpdate中 然而,这不是有些多么低效吗?正如我所想,UI事件处理程序注册只需要完成一次 onUpdate将始终重复触发 有没有更有效的方法 public class MyWidgetProvider extends AppWidgetProvider { private static final String ACTION_CLICK = "ACTION_CLICK"; @Ov
AppWidgetProvider
代码示例都将UI事件处理程序寄存器代码放在onUpdate
中
然而,这不是有些多么低效吗?正如我所想,UI事件处理程序注册只需要完成一次
onUpdate
将始终重复触发
有没有更有效的方法
public class MyWidgetProvider extends AppWidgetProvider {
private static final String ACTION_CLICK = "ACTION_CLICK";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
...
// Register an onClickListener
Intent intent = new Intent(context, MyWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
}
让我这样说吧 远程视图不是真实视图,而是用于创建真实视图的一组规则。然后调用
updateAppWidget()
,然后将这组规则发送到Android,Android通过应用这些规则创建新视图onclickpendingent
就是这些规则之一。如果它在那里,那么它就会被应用,你就有了一个监听器集
如果您创建了一个新的remoteview
实例,那么您也必须为此实例提供一个onclickpendingent
。如果您不这样做,那么就不会注册侦听器,也不会得到回调。在这方面,您不会在同一个实例中设置侦听器两次或多次,因为您也总是重新创建remoteview
,这是最佳的
如果远程视图没有改变,Android可能会通过重用现有视图来应用额外的优化。但这是你无法控制的