在我的AppCompatActivity
中,我声明了一个ActivityResultLauncher
。我使用registerForActivityResult()
创建它,并为ActivityResultCallback
传递了一个LambdaExpression
。
但是,我需要对这个ActivityResultCallback
中的一个对象的引用,这是我在调用launch()
时得到的。
示例代码:
private final ActivityResultLauncher<Intent> launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
object.doSomething();
});
method() {
Object object = new Object();
launcher.launch(new Intent(MainActivity.this, OtherActivity.class));
}
我可以将对象保存在private
字段中,但这是Android想要我们做的吗?
我知道Android不希望你在不同的活动之间共享对象。但在这里,引用应该只保存在我的MainActivity.class
中。
感谢您的帮助!
我可以把对象保存在一个私有字段中,但这是Android想要我们做的吗?
是的,几乎是的。查看文档中的片段:
registerForActivityResult()
可以在创建片段或活动之前安全调用,从而允许在为返回的ActivityResultLauncher
实例声明成员变量时直接使用它。
所以ActivityResultCallback
似乎应该引用声明的实例变量,所以您确实是
可以将对象保存在专用字段中
这样就可以了。对该对象的引用将是private
,而且它显然只存在于YourMainActivity
中。