Android查看当前Activity或路由

前言

开发时需要查看当前打开(前台)的 Activity,尤其适用于调试、排查 UI 问题或分析页面跳转逻辑。

Activity

ADB获取

1
adb shell dumpsys activity top | findstr "ACTIVITY"

打印日志获取

基类中打印日志

Kotlin

1
2
3
4
5
6
7
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ... 其他代码

// 打印当前 Activity 的类名
Log.d("CurrentActivity", "onCreate: ${this::class.simpleName}")
}

Java

1
2
3
4
5
6
7
8
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ... 其他代码

// 打印当前 Activity 的类名
Log.d("CurrentActivity", "onCreate: " + this.getClass().getSimpleName());
}

Compose路由

查看路由模板

1
2
3
4
5
6
7
8
9
10
11
12
val navController = rememberNavController()

DisposableEffect(Unit) {
val listener = NavController.OnDestinationChangedListener {
_, destination, _ ->
Log.d("Navigation", "当前路由: ${destination.route}")
}
navController.addOnDestinationChangedListener(listener)
onDispose {
navController.removeOnDestinationChangedListener(listener)
}
}

查看路由带参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DisposableEffect(Unit) {
val listener =
NavController.OnDestinationChangedListener {
_, destination, backStackEntry ->
var routeStr = destination.route ?: "未知路由"
val arguments = destination.arguments
val keys = arguments.keys
if (keys.isNotEmpty()) {
keys.forEach {
val value = backStackEntry?.get(it)
if (value != null) {
routeStr = routeStr.replace("{$it}", value.toString())
}

}
}
Log.d("Navigation", "当前路由: $routeStr")
}
navController.addOnDestinationChangedListener(listener)
onDispose {
navController.removeOnDestinationChangedListener(listener)
}
}