如何启动android活动而不在后面显示主要活动

如何启动android活动而不在后面显示主要活动,android,android-activity,stack,Android,Android Activity,Stack,我正在开发一个包含2个活动的应用程序: 用户启动应用程序时启动的主要活动 第二个活动是在用户单击按钮小部件时启动的 在主屏幕上 我创建了我的小部件以及当用户单击小部件按钮时将显示的视图 我的问题:第二个活动UI显示在主活动上方,主活动可见,因为第二个活动布局是透明的,因为我希望在小部件中单击时主屏幕仍然可见 如何仅启动第二个活动而不启动其下方的主要活动?我试图从清单文件中删除主活动中的,但当我在手机中安装应用程序时,没有安装应用程序图标,因此无法启动主活动 我希望我已经表达了我的问题。您必须在开

我正在开发一个包含2个活动的应用程序:

  • 用户启动应用程序时启动的主要活动

  • 第二个活动是在用户单击按钮小部件时启动的 在主屏幕上

  • 我创建了我的小部件以及当用户单击小部件按钮时将显示的视图

    我的问题:第二个活动UI显示在主活动上方,主活动可见,因为第二个活动布局是透明的,因为我希望在小部件中单击时主屏幕仍然可见

    如何仅启动第二个活动而不启动其下方的主要活动?我试图从清单文件中删除主活动中的
    ,但当我在手机中安装应用程序时,没有安装应用程序图标,因此无法启动主活动


    我希望我已经表达了我的问题。

    您必须在开始第二个
    活动之后立即完成第一个
    活动

    startActivity(<secondActivity>);
    finish();
    
    startActivity();
    完成();
    
    您必须在开始第二个
    活动之后立即完成第一个
    活动

    startActivity(<secondActivity>);
    finish();
    
    startActivity();
    完成();
    
    您可以在开始第二项活动后完成主要活动:

    startActivity(secondActivity.class);
    finish();
    
    或者在应用程序清单中,您可以在主活动上使用noHistory标志,这样当您离开它时,它会自动调用finish

    android:noHistory="true"
    

    您可以在开始第二项活动后完成主要活动:

    startActivity(secondActivity.class);
    finish();
    
    或者在应用程序清单中,您可以在主活动上使用noHistory标志,这样当您离开它时,它会自动调用finish

    android:noHistory="true"
    

    也许使用与第二个活动相关联的不同的意图操作和意图过滤器会起作用。看一看这张照片。记事本应用程序示例应该与您需要执行的操作类似。

    也许与第二个活动相关联的不同意图操作和意图过滤器会起作用。看一看这张照片。记事本应用程序示例应该类似于您需要执行的操作。

    我这样解决了我的问题:

    1-我添加到清单文件中的主要活动属性:

    android:launchMode="singleTask"
    
    我测试了它不会使重新启动活动时的加载时间比通常情况下更长,因为该属性不会擦除应用程序缓存并将intent实例保留在内存中

    2-将其添加到主活动类:

    @Override
    void onPause()
        {
        super.onPause();
        finish();
        }
    

    谢谢大家的帮助。

    我这样解决了我的问题:

    1-我添加到清单文件中的主要活动属性:

    android:launchMode="singleTask"
    
    我测试了它不会使重新启动活动时的加载时间比通常情况下更长,因为该属性不会擦除应用程序缓存并将intent实例保留在内存中

    2-将其添加到主活动类:

    @Override
    void onPause()
        {
        super.onPause();
        finish();
        }
    

    谢谢大家的帮助。

    启动新活动后,您是否尝试在第一个活动中调用finish()?如果您不了解answar,请不要否决任何问题..启动新活动后,您是否尝试在第一个活动中调用finish()?如果您不了解answar,请不要否决任何问题..谢谢,但是我不能这样做,因为我从小部件中启动了第二个活动,而不是从主活动中启动,所以我无法访问主活动对象来完成它。。知道我该怎么做吗?谢谢,但我不能这样做,因为我从小部件中启动了第二个活动,而不是从主活动中启动,所以我无法访问主活动对象来完成它。。你知道我该怎么做吗?告诉你,我正在寻找这个,我发现我也可以通过在我的活动属性中添加android:launchMode=“singleTask”来做到这一点,哪一个是更好的解决方案?如果我使用android:noHistory=“true”,那么android将永远不会存储应用程序内存缓存数据,这样每次加载应用程序的时间都会更长。每当启动main活动时,noHistory都会这样做,当您退出它时(关闭它或转到新活动),它将完成。我不确定这是否会对你的缓存造成负面影响,你必须调查一下。singleTask将完成堆栈中的其他活动,因此可能也会有相同的效果。谢谢你,我正在寻找这个,我发现我也可以通过在我的活动属性中添加android:launchMode=“singleTask”来完成,哪一个是更好的解决方案?如果我使用android:noHistory=“true”,那么android将永远不会存储应用程序内存缓存数据,这样每次加载应用程序的时间都会更长。每当启动main活动时,noHistory都会这样做,当您退出它时(关闭它或转到新活动),它将完成。我不确定这是否会对你的缓存造成负面影响,你必须调查一下。singleTask将完成堆栈中的其他活动,因此它可能具有相同的效果。我已经为这两个活动提供了不同的意向操作和筛选器。然后您可以直接使用其意向筛选器调用第二个活动。您可以通过使用
    Intent.setData()
    方法调用来传递第二个活动可以处理的uri来实现这一点。这里有一些可能对您有所帮助。我已经为这两个活动提供了不同的意图操作和筛选器。然后您可以直接使用其意图筛选器调用第二个活动。您可以通过使用
    Intent.setData()
    方法调用来传递第二个活动可以处理的uri来实现这一点。这里有一些可能对你有帮助。