使用应用程序上下文(Application Context)到底意味着什么?

11

我刚接触这个,如果我问了一个很蠢的问题,请见谅。我只是想澄清一些事情。我的书上说,我可以使用getApplicationContext()方法来检索进程的应用程序上下文。但我真的不知道在哪里输入这个,或者该怎么做。我可以去层次结构,但是所有的脚本都怎么处理。另外,在main.xml中写Activity回调函数吗?练习要求我向我的项目添加一个日志标记,但我不知道该如何操作。确切的文本如下:

"在onCreate()回调方法中,使用Log.i()方法添加信息性日志消息。"

而另一个练习则要求:

"除了onCreate()以外,实现一些Activity回调方法,如onStart()。为每个回调方法添加一个日志消息,然后正常运行应用程序。"

由于这些似乎是基本问题,有人能帮我吗?

我正在使用Android SDK和Eclipse。我已经创建了Hello World应用程序,但我不知道该如何处理上下文或获取资源。请帮帮我!


2
天啊,你刚刚指向了一个早于1.0版本的平台的文档,而且这个类甚至不是SDK的一部分。 - hackbod
我认识那些练习。你的书,顺便问一下,是《24小时内自学……》系列的吗?我有那本书,但当我完成它时,感觉有一些非常关键、基础的主题没有涵盖到。你可能想要看看一些替代方案 - erichamion
@erichamion--您说得对。Sam's ... Java in 24 Hours 真的很可怕。几乎任何替代方案都比它好,但替代方案的链接已经失效了。在作者的集体防御中,Java非常庞大,他们必须挑选要包含什么。但是Sam的选择太过狭窄了。即便如此,工作时间为24小时...嗯...一周3.5小时,连续3天每天8小时。而且例子给学习者留下太多的空间,以至于它们经常因为遗漏而无法编译。 - DSlomer64
2个回答

26

我要给你的第一个规则是: 如果你不知道为什么需要它,那么你可能不需要它。当你需要Context时,请使用activity对象作为Context。

你所说的回调函数在Activity类上。应用程序基础介绍了Activity的概念:http://developer.android.com/guide/topics/fundamentals.html#Components

唯一需要使用getApplicationContext()的时间是当你需要一个存在于Activity类(或其他组件)的生命周期之外的Context时。你需要找到有关特定情况的文档,这方面有很多。例如,这个是Android文档的一部分: http://android-developers.blogspot.de/2009/01/avoiding-memory-leaks.html


1
问题的另一部分是关于日志标签的。该标签只是一个字符串,您可以在Activity类中定义为“static final String”。然后,您可以调用例如“Log.i(LOG_TAG,“onStart()被调用了。太好了!”)”。 - erichamion
11
所以,你的答案是使用活动上下文。但是,你链接了一篇文章,通常建议使用应用程序上下文而不是活动上下文,以避免内存泄漏?我现在有点困惑了。使用活动上下文的优势是什么? - JacksOnF1re

0

对于你正在处理的任务,你将使用定义应用程序行为的Java代码,而不是定义资源和布局的XML文件或声明基本应用程序属性的AndroidManifest.xml文件。

如果你正在使用《Sam's Teach Yourself...》书第3小时的内容,则需要打开src\com.androidbook.droid1\DroidActivity.java文件。一般来说,你需要src\<package-name>\<class-name>.java。当你打开该文件时,你会看到一个扩展了Activity并已经有了onCreate()回调方法的类(在这种情况下为DroidActivity)。任何你想要发生在onCreate()期间的事情都应该放在那个方法里面。其他回调方法可以添加到活动类中。查看here以查看具有所有生命周期回调的示例(但在其中不执行任何操作)。

日志标记只是一个字符串。例如,你可以将其声明为活动类内部的private static final String

如果对于方法的归属、变量或常量的定义位置和方式、如何调用方法、如何使用类等方面存在困惑,那么最好在开始学习Android之前先阅读一些Java入门教材。有很多免费的资源可供使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接