如何检查Android中的意图/活动是否已经打开?

时间:2015-06-15 07:34:30

标签: android android-intent android-activity

所以,我是Android中的一个菜鸟,但我搜索了很多,我找不到解决方案:

在我的导航抽屉中,每行都会打开一个新意图。如何检查某个意图是否处于打开/活动状态,以便我使用它而不是创建新意图?

我尝试使用此解决方案:

Link

但我的问题是抽屉每次打开同一个班级,但每个班级都有不同的"额外的。"例如:

    public void itemClicked(View view, int position) {
        Intent intent=null;
        switch (position) {
            case 1:
                intent = new Intent(getActivity(), DisplayActivity.class);
                intent.putExtra("ARGUMENT","SECTION 1");
                break;
            case 2:
                intent = new Intent(getActivity(), DisplayActivity.class);
                 intent.putExtra("ARGUMENT","SECTION 2");
               break;
            case 3:
                intent = new Intent(getActivity(), DisplayActivity.class);
                intent.putExtra("ARGUMENT","SECTION 3");
                break;
           }        
      startActivity(intent);
    }

如何检查该类及其他附加内容的意图是否已打开?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用shared preferencesApplication类的范围来存储可见的最后/当前活动

如果您为应用扩展课程,或者您要将设备定位为 API等级14或以上,则可以实施ActivityLifecycleCallbacks

示例代码

public class MyApplication extends Application implements ActivityLifecycleCallbacks {
    private static boolean isMySomeActivityVisible;

    @Override
    public void onCreate() {
        super.onCreate();

        // Register to be notified of activity state changes
        registerActivityLifecycleCallbacks(this);
        ....
    }

    @Override
    public void onActivityResumed(Activity activity) {
        if (activity instanceof YOURACTIVITY) {
             isMySomeActivityVisible = true;
        }
    }

    @Override
    public void onActivityStopped(Activity activity) {
        if (activity instanceof YOURACTIVITY) {
             isMySomeActivityVisible = false;
        }
    }

    // Other state change callback stubs
    ....
}

答案 1 :(得分:1)

您还可以查看您使用的android中的启动模式。 我认为这将很好地满足您的要求。 供大家参考看看 http://www.intridea.com/blog/2011/6/16/android-understanding-activity-launchmode