java – 我对开始Android概念的理解的确认(使用多个活动)

我是
android开发的初学者,已经到了
Building your First App年底.在继续之前,我想确认并验证我对使用多个活动以及从一个活动到另一个活动进行通信的理解.

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

1)我的理解是正确的,Intent的构造函数中的第二个参数(Intent intent = new Intent(this,DisplayMessageActivity.class))用作startActivity(…)的参考,而反射用于调用onCreate方法( )在DisplayMessageActivity类中,因为DisplayMessageActivity类是作为类对象给出的吗?

2)第一个参数(构造函数中的上下文)有什么用? (基本上Android如何使用第一个参数,请简要说明,开始活动)?

3)如教程中所示,构建第一个应用程序的最后一部分,它建议我声明一个变量:( public final static String EXTRA_MESSAGE =“me.marshac.myfirstapp.MESSAGE”;).我知道这个声明和初始化的目的,但为什么我不必指定完整的包名(me.marshac.myfirstapp.(…).MESSAGE)以及来自MESSAGE变量的位置在哪里?只有两个类似的变量是sendMessage()中的局部变量和另一个活动的onCreate(),但它们是不同的case和local?

对于非常深入的询问,我很抱歉,在进入中级/高级概念之前,我想要对初学者概念有一个坚定的理解.

最佳答案 1)是的.我认为这就是幕后发生的事情.如果您想知道他们是如何做到的,您可以去阅读Android OS源代码.你知道,它是开源的.只是Google吧!

2)Android使用堆栈来存储活动.当您第一次启动应用程序时,它是这样的:

MyActivity

然后,当您启动另一个活动时,会将新的活动对象推送到堆栈上

DisplayMessageActivity
MyActivity

点击后退按钮时,会弹出堆栈中的活动.

如果您没有将此作为参数,操作系统将如何知道将新活动推送到何处?

3)我认为这只是某种约定.我通常使用简单的名称,如消息,它的工作原理!它类似于问我为什么要在PascalCase中命名一个类并在camelCase中命名一个局部变量?

点赞