【问题标题】:How to wait till the intent execution is completed in android如何等到意图执行在android中完成
【发布时间】:2016-06-30 13:23:15
【问题描述】:

我正在以编程方式从另一个应用程序调用一个应用程序,如下所示:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName(packageString,classApp));
mActivity.startActivity(intent, 2);

我想等到 Intent 应用执行完成并关闭。

我尝试使用 startActivityForResult(intent,2)。但是这个 dosnt 似乎正在工作,因为它没有在实际活动类中调用 onActivityResult。我在非活动类中调用 Intent。

【问题讨论】:

    标签: android android-intent onactivityresult start-activity startactivityforresult


    【解决方案1】:

    我想等到 Intent 应用执行完成并关闭。

    这是不可能的。您无法知道“应用程序执行何时完成并关闭”,特别是因为您正在新任务中启动该活动。例如:

    • 您开始其他活动。
    • 用户按 REENTS 并通过概览屏幕返回您的应用。
    • 现在呢?用户无需执行任何操作即可“完成并关闭”该其他应用。

    欢迎您使用生命周期方法(例如 onStart())来确定您正在重新获得控制权,但这并不意味着“应用程序执行完成并关闭”。

    【讨论】:

    • 我如何从新应用程序中获取响应或结果,而不是等待,以便在响应后我可以让当前应用程序的其他操作工作。
    • @AshishPatha:您不能从任意活动中“获取响应或结果”。您无法从启动到新任务的任何活动中“获取响应或结果”。 如果您尝试启动的活动是为与startActivityForResult() 一起使用而设计的,请使用它(不带FLAG_ACTIVITY_NEW_TASK),您的结果将进入您的onActivityResult() 方法。但是,由于您尝试从活动以外的其他内容开始活动,所以startActivityForResult() 不是一个选项。在那种情况下,你想要的东西是不可能的。
    • 那么在使用 FLAG_ACTIVITY_NEW_TASK 时没有其他方法可以得到响应吗?
    • @AshishPatha:正确。
    • 那么我如何从后台服务类打开应用程序并等待应用程序关闭或给出任何响应。我的意思是不使用 Intent 因为 Intent 没有上述讨论的能力。
    【解决方案2】:
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setComponent(new ComponentName(packageString,classApp));
    setResult(2,intent);
    
    onActivityResult check this.
    
    if(requestCode == 2){
    
    Log.v(TAG ,"Result is Received");
    }
    
    
    please check log in logcat.
    

    【讨论】:

    • 所以你想让我在调用 startActivityForResult(intent,2) this 后调用 setResult?
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2019-03-18
    相关资源
    最近更新 更多