2016-07-19 58 views
1

我有我的项目在调试模式下,我在Activity1中放置了一个断点。 。然而,当项目的执行在这个中断点停止时,我需要找出哪个Activity或类叫做Activity1。如何在Android Studio中查找活动的调用类?

我试图通过Android studio documentation寻找,我没有找到如何。

+0

据我所知,有没有办法在Android SDK方面做到这一点。欢迎您自己为'Intent'做些事情来帮助区分它们,例如在'Intent'上额外添加一个名为'startActivity()'的人。然后,您可以查看'Activity1'通过'getIntent()'获取的'Intent',以确定哪个活动启动了它。 – CommonsWare

回答

0

如果您只想知道您正在查看的活动,则可以通过查看Logcat轻松完成。打开logcat的窗口(AndroidMonitor - > logcat的)

搜索ActivityManager

你wull得到下面的日志

07-19 15:42:04.064 606-632/system_process I/ActivityManager:显示 com.android.dialer /。 DialtactsActivity: + 674ms

在这种情况下,我启动了电话应用程序。

但是,如果你简单地想要放一段代码,只有当这个活动从一个特定的地方发起时才执行,那么你可以做这样的事情。

当您启动活动时,请输入此代码。

Intent intent = new Intent(context, Activity1.class); 
intent.putExtra("ENABLE_XXX_CODE", true); 

在你想要把启用一些逻辑,这个特殊的流活动:

boolean isEnabled = savedInstanceState.getString("ENABLE_XXX_CODE"); 
if(isEnabled) 
{ 
//Your logic goes here. 
} 
0

你不能在默认情况下做到这一点,这是为什么:

Android的目的是为一个松散耦合的应用程序生命周期,这意味着在自己的每一个ActivityServiceBroadcastReceiver生活。它们可以从Intent开始,该IntentContext发送到系统架构中,然后启动新组件。因此,在断点堆栈跟踪中不会看到Intent的来源,只是一些通用的系统调用。

为了看到调用Activity的内容,您需要向调用Intent添加一些额外的数据。你不喜欢这样:

intent.putExtra("SOME_KEY", someValue); 

然后在onCreate()你读它是这样的:

if(savedInstanceState != null) { 
    String source = savedInstanceState.getString("SOME_KEY"); 
} 

如果发件人称衡源,在这里你会拥有它:-)

作为一个方面说明,你通常不会想知道什么开始Activity。上述代码将被使用的唯一真实情况是您希望传递给Activity的一些参数来配置它。除此之外,每个Activity都是并且应该是一个独立的实体:-)

相关问题