在创建自己的Widget类时,我们会覆盖一些基本的AppWidgetProvider
方法:
@Override
public void onEnabled(final Context context)
{
// TODO Auto-generated method stub
super.onEnabled(context);
}
@Override
public void onDeleted(final Context context, final int[] appWidgetIds)
{
// TODO Auto-generated method stub
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(final Context context)
{
// TODO Auto-generated method stub
super.onDisabled(context);
}
@Override
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds)
{
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onReceive(final Context context, final Intent intent)
{
// TODO Auto-generated method stub
super.onReceive(context, intent);
}
当我们在结束时拨打super()
或开始时,它是否会执行任何预处理?
是否有规则/解释何时致电super()
?
答案 0 :(得分:2)
AppWidgetProvider
class只是一个BroadcastReceiver
,它有一个专门的onReceive()
方法,可以根据操作将传入的广播委托给其他方法。 onEnabled()
类中的onDeleted()
,onDisabled()
,onUpdate()
和AppWidgetProvider
方法都为空,因此无需调用super
其中任何一种方法。
您根本不需要覆盖onReceive()
,并且可以在其他提供的方法中处理窗口小部件的功能。如果您打算覆盖onReceive()
方法并自行处理所有内容 - 也就是检查操作,并在每种情况下采取相应措施 - 那么您也可以省略super
调用。如果你要“走到中途”,只是直接处理一些动作,那么你只需要在适当的时候调用super.onReceive()
,因为它真正要做的就是立即调用其他方法之一。
答案 1 :(得分:1)
使用super
关键字,您将调用特定方法的超类实现。
与超级调用相比,将代码放在哪里取决于您希望它在超类实现之前或之后运行的时间。
如果是onEnabled()
,onDisabled()
和onDeleted()
以及onUpdate()
,则没关系,它们是超类中的空方法,您甚至不需要打电话给他们。
onReceive()
基本上是一个调度程序,它根据收到的操作调用该类的所有其他方法。如果您想自己这样做,请不要打电话。如果不这样做,请根据您的需要在适合其他方法调用时调用它。