首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要检查某个活动是否存在父活动。

需要检查某个活动是否存在父活动。
EN

Stack Overflow用户
提问于 2017-01-30 15:02:16
回答 2查看 1K关注 0票数 2

让我解释一下我想做什么。我有SignUp活动,登录活动和主要活动。注册活动是登录活动的父活动,这意味着如果用户按后退软键,就可以返回它。一旦我从注册到主要活动,我就清除所有活动实例。

  • 用户可以通过登录活动注册活动。
  • 在注册活动中,用户可以跳过注册,进入主活动中的来宾模式,或者返回登录活动,即清单中的父活动。
  • 用户可以从主要活动转到注册活动。

现在我关心的是,如果我在主活动中从注册模式转到来宾模式,请注意登录活动实例将被清除,然后单击后退注册/注册活动。我想知道它是来自父活动,即登录活动还是主要活动。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-30 15:12:54

你可以简单地在你的意图上加上一点:

代码语言:javascript
复制
Intent intent = new Intent(CallingActivity.this, ActivityToStart.class);
intent.putExtra("startedFrom", CallingActivity.class.toString());
startActivity(intent);

在新开始的活动中进行适当的检查:

代码语言:javascript
复制
if(getIntent().getExtras().getString("startedFrom", null) != null) {
 //You were started from the specified Activity
}

如果使用startActivityForResult()启动活动,则可以跳过上述步骤,只需使用getCallingActivity()

票数 1
EN

Stack Overflow用户

发布于 2017-01-30 15:07:46

您可以检查是否正在运行:

代码语言:javascript
复制
 public boolean isRunning(Context ctx) {
    ActivityManager activityManager = 
(ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);

List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

        for (RunningTaskInfo task : tasks) {
            if (ctx.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName())) 
                return true;                                  
        }

        return false;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41939044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档