我是 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/