我有我的项目在调试模式下,我在Activity1中放置了一个断点。 。然而,当项目的执行在这个中断点停止时,我需要找出哪个Activity或类叫做Activity1。如何在Android Studio中查找活动的调用类?
我试图通过Android studio documentation寻找,我没有找到如何。
我有我的项目在调试模式下,我在Activity1中放置了一个断点。 。然而,当项目的执行在这个中断点停止时,我需要找出哪个Activity或类叫做Activity1。如何在Android Studio中查找活动的调用类?
我试图通过Android studio documentation寻找,我没有找到如何。
如果您只想知道您正在查看的活动,则可以通过查看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.
}
你不能在默认情况下做到这一点,这是为什么:
Android的目的是为一个松散耦合的应用程序生命周期,这意味着在自己的每一个Activity
,Service
和BroadcastReceiver
生活。它们可以从Intent
开始,该Intent
从Context
发送到系统架构中,然后启动新组件。因此,在断点堆栈跟踪中不会看到Intent
的来源,只是一些通用的系统调用。
为了看到调用Activity
的内容,您需要向调用Intent
添加一些额外的数据。你不喜欢这样:
intent.putExtra("SOME_KEY", someValue);
然后在onCreate()
你读它是这样的:
if(savedInstanceState != null) {
String source = savedInstanceState.getString("SOME_KEY");
}
如果发件人称衡源,在这里你会拥有它:-)
作为一个方面说明,你通常不会想知道什么开始Activity
。上述代码将被使用的唯一真实情况是您希望传递给Activity
的一些参数来配置它。除此之外,每个Activity
都是并且应该是一个独立的实体:-)
据我所知,有没有办法在Android SDK方面做到这一点。欢迎您自己为'Intent'做些事情来帮助区分它们,例如在'Intent'上额外添加一个名为'startActivity()'的人。然后,您可以查看'Activity1'通过'getIntent()'获取的'Intent',以确定哪个活动启动了它。 – CommonsWare