android - 使用 startActivityForResult() 的代码流

标签 android start-activity

我正在开发一款 Android 应用。我有一个 Activity 来检查我的设备上是否存在 XML 文件。如果它不存在,我会调用一个例程来执行一系列操作,包括从 URL 下载该文件。

如果它确实存在,我想提示(是/否)用户看看他们是否想重新下载文件,或者只是跳过它。

我从使用对话框开始。我看到的讨论说 Dialogs 只是异步的,所以我改用 Activity 来提示是/否。

进一步阅读后,我相信真正的答案是使用 startActivity() 启动 Activity 会异步启动 Activity,但使用 startActivityForResult() 会同步启动它(阻塞)。这种说法正确吗?

好的,假设我上面的陈述是正确的,我一直在研究如何回到代码流中的原始起点,知道用户选择了哪个按钮(是/否)。

所有的例子都告诉我,我需要用它来得到我的结果。

protected void onActivityResult(int requestCode, int resultCode,Intent data) {

}

我正在努力解决如何将其放入我的代码中以使其更容易流动的问题。我看到很多示例显示了所需的代码 fragment ,但我不清楚它们是如何组合在一起的。我的代码结构最终是这样的吗:

public class MainScreen extends Activity    {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    protected void onButtonClick(parameters)    {
        /* Do some work to see if the file exists */
        if (!file.exists()) {
            runComplexRoutine(various_parameters);

        } else {
            Intent myIntent = new Intent(getBaseContext(), PromptingActivity.class);
            myIntent.putExtra("filename", variable_holding_filename);   // Just passing a parameter to use in the title of the caled Activity
            startActivityForResult(myIntent, 1);
                        // Point A
        }
    }


    protected void onActivityResult(int requestCode, int resultCode,Intent data) {
        if (resultsCode == Activity.RESULT_OK)  {
            runComplexRoutine(various_parameters);
        }
        // else, do nothing...
    }

}

我的问题是我必须传递大量的 various_parameters。如果我可以在 Point A 恢复流程,那就太好了,但这似乎不可能。我在这里正确吗?

最佳答案

startActivityForResult() 是异步的。它对用户来说感觉是同步的,因为 UI 会改变并且您的调用 Activity 将暂停(您的 onPause() 方法将被调用)。

但是您的调用 Activity 仍然能够运行代码;你将实现一个回调,当你为结果开始的 Activity 完成时调用(这使得它很像一个对话框)。

关于android - 使用 startActivityForResult() 的代码流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12167003/

相关文章:

android - MaskedEditText 提示(android)

php - 在我的 Android 应用程序上使用 GCM 推送通知

java - Android 应用程序创建文件但找不到它

android - 按下后退按钮时Android崩溃

android - 其他 Activity 也被带到前面 StartActivity

android - 是否可以在同一通知中同时使用 InboxStyle 和 BigText

android - startActivity 和 startSubActivity

java - 如何在外包静态函数中启动 Intent?

java - startActivityForResult() 可以发送数据吗?

android - 无法在 Android 10 上从 BroadcastReceiver 启动 Activity