你能告诉我公共方法在Android中是如何调用的吗?我不明白。如果你读过关于java的文献,那么方法必须通过一个对象来调用,例如“object.method”。但是在android中,只描述公共方法就足够了,它会被自己调用,如下面的例子所示。你能告诉我是谁调用了这个方法onCreateOptionsMenu
吗?这个方法的调用在哪里指定?他为什么自愿?在哪里阅读它?
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onCreateOptionsMenu(Menu menu)
{
// TODO Auto-generated method stub
menu.add("menu1");
menu.add("menu2");
menu.add("menu3");
menu.add("menu4");
return super.onCreateOptionsMenu(menu);
}
}
这实际上是一个很好的问题,因为它并不完全显而易见,即使您阅读了生命周期
Activity
。所以,简而言之:发生的第一件事是对象被创建
Activity
。在这种情况下,只有它的构造函数被处理,没有别的:但通常没有人以这种形式创建对象。相反,一切都会通过
Intent
:如果没有前一个
Activity
(在本例中previousActivity
),那么系统只是启动选定的 Activity.class,实际上也是通过 Intent。只有在
startActivity(intent)
方法被处理之后onCreate(Bundle savedInstanceState)
,即 换句话说,正是这个startActivity
本质上启动了它。事实上,链条有点长:实际上,开发者无权访问create()方法,甚至可以调用不同的方法,无论如何,这个方法创建一个Activity并启动
callback
onCreate
;此外,一旦它
onCreate
工作,它就会启动callback,这又会启动 start() 方法,它会启动callbackonStart
,onStart
然后会启动callback
,它会启动 resume() ,然后callbackonResume
starts 。onCreateOptionsMenu
一切都不是那么明显,因为启动在不同版本的 Android 中看起来不同。故意省略旧版本,我们可以肯定地说,根据文档,对于 Android 3.0+,它在 Activity 启动时启动,即 在 start() 方法中按应用栏元素显示的顺序(通常支持用作应用栏Toolbar
)这些是系统回调方法(回调方法,通常由方法名称中的on-前缀表示)。当某些系统事件发生时,它们被系统调用。
例如,
onCreateOptionsMenu()
当应用程序需要创建菜单时由系统调用(按下系统菜单按钮时调用)。会发生以下情况:当应用程序需要显示菜单时,系统开始执行某些操作,其中一个阶段会触发回调
onCreateOptionsMenu()
,这里应用程序程序员可以输入自己的代码,该代码将按比例执行使用系统一,在创建菜单时,通常确定该菜单将包含的内容(项目)另请参阅系统回调的此答案。您还可以阅读您能找到的所有内容,活动生命周期、系统回调和任何有关 Android 开发的书籍,其中对所有这些内容都有一些详细说明。我可以推荐 B. Hardy 的书“Android. Programming for professionals” - 2016,第 2 版
阅读有关 Activity 生命周期的信息。据我了解 onCreateOptionsMenu(Menu menu) 在创建活动时自动调用。以及许多其他功能。去 startandroid.ru/ 有很多有用的东西。
您的 MainActivity 类是 Activity 类的扩展。Activity 是一个屏幕,类似于 Windows 中的表单。例如,您当前使用的浏览器。该方法
onCreate
在应用程序启动时由 Android 系统调用。onCreateOptionMenu
由负责显示所有内容的类调用。