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

时间:2015-12-27 16:36:18

标签: java android android-intent reflection

我是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 个答案:

答案 0 :(得分:2)

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

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

MyActivity

然后当你开始另一个活动时,一个新的活动对象被推入堆栈

DisplayMessageActivity
MyActivity

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

如果您没有提供this作为参数,操作系统将如何知道将新活动推送到哪里?

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