我有我的項目在調試模式下,我在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