【问题标题】:Run second activity when first is closed在第一个活动关闭时运行第二个活动
【发布时间】:2016-01-14 01:09:25
【问题描述】:

如果我的第一个 activity 已关闭,你能告诉我如何运行我的第二个 activity 吗?可能需要一段时间才能打开第二个活动。我应该使用 Service 吗?请举个例子.非常感谢。

【问题讨论】:

  • 在什么情况下要运行第二个活动?
  • 我希望第一个活动关闭一段时间,然后可以打开第二个活动

标签: android


【解决方案1】:

答案将取决于您希望在什么条件下开始下一个活动。以下只是一个示例,在 onDestroy 中所做的任何事情都可以复制到其他任何地方以开始下一个活动。

覆盖第一个活动的 onDestroy 方法,然后触发一个意图来启动第二个活动。 在您的第一个活动中,

public class A extends Activity{
    .
    .
    .
    @Override
    public void onDestroy(){
        Intent in = new Intent(this, SecondActivity.class);
        startActivity(in);
    .
    .
    .
    }
}

确保这两个活动都在 AndroidManifest.xml 中提及

编辑:要在一段时间后开始,您可以使用这样的处理程序。 (注意:这个未经测试。我希望它能按预期工作)

public void onDestroy(){
    new Handler.postDelayed(new Runnable(){
                    public void run() {
                        Intent in = new Intent(this, SecondActivity.class);
                        startActivity(in);
                    }                   
                }, 7000);
}

这里的 7000 是您想要开始下一个活动的毫秒数。即下一个活动将在 7 秒后开始。

一切顺利:)

【讨论】:

  • 感谢您的回答!但是我忘了提一件事:第二个活动可以在第一个活动关闭一段时间后打开。
【解决方案2】:

如果我的第一个活动已关闭

对我来说,这听起来像是“由于用户操作而关闭”。从onDestroy() 开始一个新的Activity 是一个坏主意,因为如果需要,系统可能会破坏您的Activity。如果设备旋转,它也可能被破坏。更好的方法是覆盖后退按钮:

   @Override
   public void onBackPressed() {
     //delay 2nd Activity launch
    super.onBackPressed();
   }

【讨论】:

    【解决方案3】:

    如果您尝试从第一个 Activity 中延迟启动第二个 Activity,如果应用程序从内存中清除,您可能会面临根本无法打开的风险。您最好的选择是使用AlarmManager 安排在一定时间后开启新活动。这会将工作放在 Android 操作系统上,而不是在您的应用中。

    This post 包含一些代码示例,说明如何处理此问题。

    【讨论】:

    • 但是我怎么理解 AlarmManager 只能打开广播接收器,不是吗?(​​因为未决意图)。
    • @Konar 我不赞成这些限制,但是如果是这种情况,您可以简单地从广播接收器启动活动(我认为这需要自定义启动标志)。像this 这样的东西应该可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    相关资源
    最近更新 更多