Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何追踪我发起的活动或任务是否在Android中?_Android_Android Activity - Fatal编程技术网

如何追踪我发起的活动或任务是否在Android中?

如何追踪我发起的活动或任务是否在Android中?,android,android-activity,Android,Android Activity,我正在编写一个Android服务来监视用户,以检查该用户是否离开了该服务启动的活动或应用程序(及其子活动)。我尝试使用Activitymanager.getRunningTasks()获取前台活动的包名和任务ID,并检查它是否与我的服务启动的包相同。如果所有子活动都位于同一任务中,则此方法有效 但是,如果外部应用程序中的某些活动作为新任务启动,则上述方法不起作用 如果前台活动由我或我的子活动启动,是否有类似“任务堆栈”或“应用程序堆栈”的东西可供我跟踪 到目前为止,我尝试过的代码periodic

我正在编写一个Android服务来监视用户,以检查该用户是否离开了该服务启动的活动或应用程序(及其子活动)。我尝试使用Activitymanager.getRunningTasks()获取前台活动的包名和任务ID,并检查它是否与我的服务启动的包相同。如果所有子活动都位于同一任务中,则此方法有效

但是,如果外部应用程序中的某些活动作为新任务启动,则上述方法不起作用

如果前台活动由我或我的子活动启动,是否有类似“任务堆栈”或“应用程序堆栈”的东西可供我跟踪

到目前为止,我尝试过的代码periodicCheck()是定期调用的:

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;
}否则{
//用户已离开我们的目标应用程序,请执行某些操作
}
}

请显示到目前为止您编写的代码。