如何追踪我发起的活动或任务是否在Android中?
我正在编写一个Android服务来监视用户,以检查该用户是否离开了该服务启动的活动或应用程序(及其子活动)。我尝试使用Activitymanager.getRunningTasks()获取前台活动的包名和任务ID,并检查它是否与我的服务启动的包相同。如果所有子活动都位于同一任务中,则此方法有效 但是,如果外部应用程序中的某些活动作为新任务启动,则上述方法不起作用 如果前台活动由我或我的子活动启动,是否有类似“任务堆栈”或“应用程序堆栈”的东西可供我跟踪 到目前为止,我尝试过的代码periodicCheck()是定期调用的:如何追踪我发起的活动或任务是否在Android中?,android,android-activity,Android,Android Activity,我正在编写一个Android服务来监视用户,以检查该用户是否离开了该服务启动的活动或应用程序(及其子活动)。我尝试使用Activitymanager.getRunningTasks()获取前台活动的包名和任务ID,并检查它是否与我的服务启动的包相同。如果所有子活动都位于同一任务中,则此方法有效 但是,如果外部应用程序中的某些活动作为新任务启动,则上述方法不起作用 如果前台活动由我或我的子活动启动,是否有类似“任务堆栈”或“应用程序堆栈”的东西可供我跟踪 到目前为止,我尝试过的代码periodic
int myTaskId = -1;
String myPackageName = "application.launched.by.me";
void periodicCheck() {
android.app.ActivityManager activityManager = (android.app.ActivityManager) SystemManagerService.this.getSystemService(Context.ACTIVITY_SERVICE);
List<android.app.ActivityManager.RunningTaskInfo> taskInfo = activityManager.getRunningTasks(10);
String currentApplicationPackageName = taskInfo.get(0).baseActivity.getPackageName();
int currentApplicationTaskId = taskInfo.get(0).id;
if (currentApplicationPackageName.equals(myPackageName) || myTaskId == currentApplicationTaskId) {
// user is staying in our target application
// update the task ID
myTaskId = currentApplicationTaskId;
} else {
// user has left our target application, do something
}
}
intmytaskid=-1;
字符串myPackageName=“application.launched.by.me”;
作废周期检查(){
android.app.ActivityManager ActivityManager=(android.app.ActivityManager)SystemManagerService.this.getSystemService(Context.ACTIVITY_服务);
List taskInfo=activityManager.getRunningTasks(10);
字符串currentApplicationPackageName=taskInfo.get(0.baseActivity.getPackageName();
int currentApplicationTaskKid=taskInfo.get(0.id);
如果(currentApplicationPackageName.equals(myPackageName)| | myTaskId==CurrentApplicationTaskKid){
//用户将留在我们的目标应用程序中
//更新任务ID
myTaskId=CurrentApplicationTaskKid;
}否则{
//用户已离开我们的目标应用程序,请执行某些操作
}
}
请显示到目前为止您编写的代码。