android - Activity Intent 完成后运行代码

标签 android android-intent android-activity

我是 Android 的新手,所以这一直困扰着我。我目前有一个 Activity 可以打开第二个 Activity ;第二个 Activity 允许您从一组字符串中进行选择,单击其中一个后,Activity 将关闭。

Activity 是这样调用的:

    final Intent intent = new Intent(context, theActivity.class);
    context.startActivity(intent);

我希望能够在该 Activity 关闭时运行代码。特别是,我试图在 Activity 结束时重新加载一些数据。流程的一个例子是

    final Intent intent = new Intent(context, theActivity.class);
    context.startActivity(intent);
    DoStuffLikeReloadingData(foo bar);

当然,问题在于 DoStuffLikeReloadingData 在启动 Activity 后立即运行,而不管它是否完成。

所以我想知道的是:是否有某种我可以 Hook 的事件会在 Activity 结束时触发,这样我就可以在那里做我想做的事了?如果没有,你们能否想出一种方法,如果以这种方式调用,我可以监视该 Activity 并在它关闭或完成时触发代码?

任何帮助都会很棒!谢谢。

最佳答案

是的,您可以使用 startActivityForResult(Intent, int requestCode); 方法启动一个 Activity 以请求结果,这将导致 Activity 的 onActivityResult(int requestCode, int resultCode, Intent data) 被调用的 Activity 返回时调用的方法。

这是一个例子:

public static final int REQUEST_CODE_SOMETHING = 1001;

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode == REQUEST_CODE_SOMETHING){
        // It came from our call
        if(resultCode == Activity.RESULT_OK){
            // The result was successful
            DoStuffLikeReloadingData(); // you can use the data returned by the Intent do figure out what to do
        }
    }
}

private void startActivity(){
    final Intent intent = new Intent(context, theActivity.class);
    startActivityForResult(intent, REQUEST_CODE_SOMETHING);
}

现在您可以打开一个 Activity 并对结果执行操作。如果您想将数据传递给 Activity 或从 Activity 传回数据,您可以通过 intent.putExtra(String key, Parcellable object) 向 Intent 添加额外内容来实现。

在第二个 Activity 中,您应该在调用 finish() 将数据传回之前调用方法 setResult(int resultCode, Intent data)

关于android - Activity Intent 完成后运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26618543/

相关文章:

java - andengine中的扭曲/扭曲纹理

android - ToUri() 不会转换所有额外的 Intent (parcelable、serializable、byte[]..)

java - 如何通过共享屏幕打开我的 Android 应用程序?

java - Android - fragment 启动但不显示内容

android - 底部导航上方的 Bottom Sheet

java - 导入 google-play-service 依赖红十字

java - 具有多个 Activity 的 Android 共享首选项

android - 如何禁用Android手机的触摸屏?

android - 如何从膨胀的布局中获取 View 的引用

永不停止的android持久性 Activity