【问题标题】:Launch 2 intent but not at the same time启动 2 个意图,但不是同时
【发布时间】:2013-08-19 05:04:06
【问题描述】:

如果我开始使用意图,我会遇到问题

try{
    startIntent1(); //Add Contact Intent
} finally {
    startIntent2(); // Contact Picker Intent
}

他们一起开始......有没有办法在我的intent1之后启动intent2?

【问题讨论】:

  • 您可以使用线程启动 Intent,但会稍有延迟。
  • 解释你的更多。你想做什么?

标签: android android-intent


【解决方案1】:

你可以使用 finally 没有放入的处理程序

int duration = 1500; // milliseconds
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        startIntent2();
    }
}, duration);

【讨论】:

  • 所以现在这段代码中的问题是......如果用户添加联系人的速度很慢怎么办?所以当他添加联系人时,intent2 会开始 10 秒?
【解决方案2】:

当您将startIntent2() 保留在finally{} 中时,无论是否发生任何异常,这都会触发。

如果你想在startIntent1() 之后开始startIntent2(),你可以在onCreate() 方法的onCreate() 活动中写startIntent2(),否则你也可以使用Thread

【讨论】:

  • 是否有一种方法可以检查意图是否完成?
  • @RonPelayo 你想要如果第一个意图的活动应该完成那么只有第二个意图应该开始......??
  • 没错! :) 但我认为 startActivityOnResult 是我解决问题的最佳方法。谢谢您的建议
  • @RonPelayo 就是这样......否则你可以从添加内容活动开始另一个意图并完成当前添加内容活动,否则你可以使用 startActivityOnResult.. :)
  • 你能给我一个关于添加内容活动的例子吗? :)
【解决方案3】:

对于多重意图,您需要以下内容`

Intent mIntent1 = new Intent(this, Activity1.class);
mIntent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
Intent mIntent2 = new Intent(this, Activity2.class);
Intent[] list = new Intent[2];
list[0] = mIntent1;
list[1] = mIntent2;
startActivities(list);`

原分享here

【讨论】:

    【解决方案4】:

    感谢您提供的所有解决方案,但我已经通过使用 startActivityOnResult 做到了

    Intent intent = new Intent(Intent.ACTION_INSERT,
                ContactsContract.Contacts.CONTENT_URI);
    
            context.startActivityForResult(intent, 6);
    

    然后在 ActivityResult 上

    case 6 :
            ContactPicker cp = new ContactPicker(this);
            cp.doLaunchContactPicker(); //launch the intent for contact picker
            break;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多