android - 将数据从活动 B 传递到 A 而 B 未完成
问题描述
我有一个项目,用户从活动 A 导航到 B。活动 B 中的一些信息必须在 B 未完成的情况下发送到活动 A。这应该使得 A 已经开始在后台处理数据成为可能。
我有以下示例项目:
活动一:
class MainActivity : AppCompatActivity() {
private lateinit var goButton: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
goButton = findViewById(R.id.goButton)
goButton.setOnClickListener{
startActivityForResult(Intent(this, MainActivity2::class.java), 100)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode == Activity.RESULT_OK){
if(requestCode == 100){
Log.e("Picture: ", data!!.getStringExtra("picture")!!)
}
}
}
}
活动 B:
class MainActivity2 : AppCompatActivity() {
private lateinit var backButton: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
backButton = findViewById(R.id.returnButton)
backButton.setOnClickListener{
intent.putExtra("picture", UUID.randomUUID().toString())
setResult(Activity.RESULT_OK, intent)
finish()
}
}
}
这可行,但如果我删除“finish()”行,这将不再有效。但我想在每次按下按钮时发送生成的 UUID,而不仅仅是在 B 完成时发送。
解决方案
你不能这样做,因为Activity
可能只有一个同时工作,所有其他人至少暂停,可能也停止。因此,“背景”Activity
不能像Activity
GUI 一样做任何事情——它不可见,所以它无所事事。如果您必须开始一些逻辑处理,与 GUI 无关,那么所有代码都应该在某个后台工作组件中开始,例如新的Thread
或简单的Service
,并且首先应该在恢复(调用)Activity
时读取已处理的数据/处理状态onResume
推荐阅读
- kentico - 创建自定义同义词列表
- computer-vision - 为我的图像应用多 Otsu 阈值
- pandas - Pandas 适用于 group by 以进行文本连接
- plugins - 将 tt_content 的 TCA 更改为子类型?
- ssl - 套接字 sslerror 握手失败 Python 2.4.3
- php - MAMP 4.2 + CodeIgnter 4.1:无法在 Windows 10 环境下加载 PHP 7.4.1 中的 intl 扩展
- assembly - How to split a 32-bit integer to two 16-bit half-words
- r - 在条件发生变化的情况下按条件创建序列
- sql - 在 SQL 和 SSRS 中填充一个月中的所有日期
- python - 在 conn.request() 中编码变量时如何克服“字段必须包含整数”?