Android: Widget 中 super() 调用的位置
Android: Locations of super() calls in Widgets
在创建自己的小部件 class 时,我们将覆盖一些基本的 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()
时,它是否执行任何预处理?
是否有 rule/explanation 何时调用 super()
?
AppWidgetProvider
class 只是一个 BroadcastReceiver
,带有专门的 onReceive()
方法,可根据操作将传入广播委托给其他方法。 onEnabled()
、onDeleted()
、onDisabled()
、onUpdate()
方法在AppWidgetProvider
class中都是空的,所以不需要调用super
方法中的任何一个。
您根本不需要重写 onReceive()
,只需在提供的其他方法中处理您的小部件的功能即可。如果您打算覆盖 onReceive()
方法并自己处理所有事情——即检查操作,并在每种情况下采取相应的行动——那么您也可以省略那里的 super
调用。如果您要 "go halfway",并且只是直接处理一些操作,那么您只需要在适当的时候调用 super.onReceive()
,因为它真正要做的是立即调用其他方法之一。
通过使用 super
关键字,您将调用特定方法的超级class 实现。
与 super 调用相比,您应该将代码放置在何处取决于您希望它何时 运行,在 superclass 实施之前或之后。
在onEnabled()
、onDisabled()
和onDeleted()
和onUpdate()
的情况下,没关系,它们是superclass中的空方法, 你甚至不需要打电话给他们。
onReceive()
基本上是一个调度程序,它根据收到的操作调用 class 的所有其他方法。如果您想自己做,请不要调用它。如果您不这样做,请根据您的需要在适合调用其他方法时调用它。
在创建自己的小部件 class 时,我们将覆盖一些基本的 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()
时,它是否执行任何预处理?
是否有 rule/explanation 何时调用 super()
?
AppWidgetProvider
class 只是一个 BroadcastReceiver
,带有专门的 onReceive()
方法,可根据操作将传入广播委托给其他方法。 onEnabled()
、onDeleted()
、onDisabled()
、onUpdate()
方法在AppWidgetProvider
class中都是空的,所以不需要调用super
方法中的任何一个。
您根本不需要重写 onReceive()
,只需在提供的其他方法中处理您的小部件的功能即可。如果您打算覆盖 onReceive()
方法并自己处理所有事情——即检查操作,并在每种情况下采取相应的行动——那么您也可以省略那里的 super
调用。如果您要 "go halfway",并且只是直接处理一些操作,那么您只需要在适当的时候调用 super.onReceive()
,因为它真正要做的是立即调用其他方法之一。
通过使用 super
关键字,您将调用特定方法的超级class 实现。
与 super 调用相比,您应该将代码放置在何处取决于您希望它何时 运行,在 superclass 实施之前或之后。
在onEnabled()
、onDisabled()
和onDeleted()
和onUpdate()
的情况下,没关系,它们是superclass中的空方法, 你甚至不需要打电话给他们。
onReceive()
基本上是一个调度程序,它根据收到的操作调用 class 的所有其他方法。如果您想自己做,请不要调用它。如果您不这样做,请根据您的需要在适合调用其他方法时调用它。