gpt4 book ai didi

android - 通过标签类获取Android中当前运行的Activity

转载 作者:行者123 更新时间:2023-11-29 19:35:40 24 4
gpt4 key购买 nike

我有一个包含 50 个 Activity 的 Android 应用程序,我不会在 log-cat 中跟踪当前正在运行的 Activity ,而不是在所有 Activity 中创建 ActivityManger 或在每个 Activity 中调用实例对象。

我的想法是创建一个非 Activity 类并将其附加到 Manifest.xml 中的标记,以便它应该跟踪所有 Activity 。

最佳答案

您可以创建一个 Android 服务并从那里打印当前 Activity 。例如,以下服务将在 0.7 秒超时后无限期运行,并将当前 Activity 打印到 LogCat:

public class MyService extends Service {

public static final String TAG = "Background Service";

public boolean wait;
public boolean stop = false;

SharedPreferences prefs;

@Override
public IBinder onBind(Intent intent) {
Log.i(TAG, "On bind of service");
return null;
}

@Override
public void onDestroy() {
stop = true;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
(new Thread(new Runnable() {

public void run() {
try {
update();
return;
} catch (Exception exception) {
exception.printStackTrace();
}
}

})).start();

return super.onStartCommand(intent, flags, startId);
}

public void update() {
List list;
String str;

do {
try {
Thread.sleep(701L);
} catch (InterruptedException interruptedexception) {
interruptedexception.printStackTrace();
}

list = ((ActivityManager) getSystemService("activity"))
.getRunningTasks(1);
str = ((android.app.ActivityManager.RunningTaskInfo) list.get(0)).topActivity
.getClassName();

Log.d(TAG, str);
} while (!stop);

stopSelf();
}
}

您也可以传递值以在一段时间后停止服务。如果您还想知道如何启动服务,那么您可以在 Activity 上执行以下操作:

Intent intent = new Intent(this, MyService.class);
startService(intent);

并执行以下操作来停止服务:

stopService(intent);

关于android - 通过<application>标签类获取Android中当前运行的Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39227884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com