我想从一个没有活动的类中检查哪个活动在前面(这只是另一个为我执行一些操作但不受任何活动限制的类)。
如何从此类中检查屏幕上实际显示的活动?
您可以使用ActivityManager来获取它。以下是示例代码:
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
Log.d("topActivity", "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo = taskInfo.get(0).topActivity;
String packageName = componentInfo.getPackageName();
您的清单需要以下权限:
uses-permission android:name="android.permission.GET_TASKS"
另一种方法是在自定义应用程序对象中创建一个名为“Activity lastActivityShown”的成员,并且在所有活动的所有 onCreate 中,您可以getApplication().setLastActivityShown(this)
通过这种方式不需要权限。您还可以创建具有此逻辑的 BaseActivity 并获取所有活动扩展此。