Android上的startActivity

时间:2010-07-17 23:26:46

标签: android

所以我一直试图让我的应用程序通过intent运行一个Activity并且它工作正常,当我然后分配finish();方法时,它返回到调用它的活动。我唯一不理解的是,我不确定被调用的Activity在前面是否被置于onPause。我试图在被调用者Acitivty的onPause()方法中设置Toast消息,但它不会出现。

我首先尝试使用startActivity(intentname)调用第二个Activity,然后在第一个Acitivty调用finish()方法,然后我尝试使用startActivityForResult() (即使我不喜欢确实需要从被调用的Activity 方法接收任何信息,并用onActivityResult()关闭它。

我找不到任何关于这些Activity方法对调用另一个Activity的Activity的副作用的信息。所以我想知道是否有人可以帮助我?

// Thx提前

3 个答案:

答案 0 :(得分:2)

根据Activity的文档,当另一个Activity放在它前面时,将调用onPause()生命周期方法。

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

如果被调用的Activity是半透明的,那么也会调用onStop(),但是如果您的初始Activity根本不可见,则不会调用onStop()。

值得注意的是,当你在被调用的Activity上调用finish()时,onResume()将在调用者(和onStart()上调用,假设onStop()也被调用)

答案 1 :(得分:1)

快速回答您的问题:如果活动A开始活动B,则运行A的onPause方法。我认为如果B不是全屏,可能会有例外情况,但这只是我刚才在文档中读到的东西的暂时记忆。

至于为什么你的吐司没有显示 - 你还记得吗?显示()吗?我总是忘记那样做。如果在活动暂停时触发它们也会被错过,因为它的上下文消失了。有一种更简单的方法来测试它 - 只需使用Log方法。例如,Log.d("My app name", "onPause was just triggered");“我的应用名称”字符串的目的是让您在LogCat中按其过滤。如果您不知道如何显示LogCat,并假设您正在使用Eclipse,请参阅this answer to another question

答案 2 :(得分:0)

让它起作用,对onResume()的目的有点困惑,我想在第一个Activity中取消onActivityResult(),这样第二个Activity就会在finish()