安卓开发:如何将日志及当前运行应用列表输出至TextView?
解决方法:将运行应用列表显示到TextView中
嘿,作为安卓新手,我完全懂你想把获取到的运行应用信息展示在界面上的需求,咱们一步一步来搞定:
第一步:配置必要权限
首先,得在AndroidManifest.xml里添加获取任务列表的权限(注意:Android 11及以上版本对这个权限做了限制,只能获取当前应用的任务;如果要获取其他应用的信息,得适配新API,这里先基于你提供的代码说明):
<uses-permission android:name="android.permission.GET_TASKS" />
第二步:准备布局中的TextView
在你的布局文件(比如activity_main.xml)里加一个TextView,建议用ScrollView包裹,避免内容太多显示不全:
<ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv_running_apps" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:textSize="14sp"/> </ScrollView>
第三步:修改代码,把应用信息拼接后显示到TextView
你原来的代码是把信息打印到Logcat,现在咱们改用StringBuilder收集所有应用信息,最后把完整内容设置到TextView里:
// 先获取布局中的TextView实例 TextView runningAppsTv = findViewById(R.id.tv_running_apps); final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); final List<ActivityManager.RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE); // 用StringBuilder拼接内容,比直接字符串拼接效率更高 StringBuilder appInfoBuilder = new StringBuilder(); for (int i = 0; i < recentTasks.size(); i++) { ActivityManager.RunningTaskInfo taskInfo = recentTasks.get(i); String appInfo = "Application executed : " + taskInfo.baseActivity.toShortString() + "\t\t ID: " + taskInfo.id + "\n"; // 保留Log打印方便调试 Log.d("Executed app", appInfo.trim()); // 将信息添加到拼接器中 appInfoBuilder.append(appInfo); } // 把最终拼接好的内容设置到TextView runningAppsTv.setText(appInfoBuilder.toString());
额外提醒
- 如果你的目标版本是Android 11(API 30)及以上,
getRunningTasks()方法已经被废弃,GET_TASKS权限也不再生效,只能获取当前应用的任务。要是需要获取其他正在运行的应用,建议使用UsageStatsManagerAPI,但这需要用户授权「使用情况访问权限」。 - 用
StringBuilder而不是直接循环拼接字符串,是因为循环里直接拼接会产生大量临时对象,效率很低,StringBuilder更适合这种批量拼接场景。
内容的提问来源于stack exchange,提问作者Ravi Sen
相关产品推荐
相关产品推荐

