在Android开发中,当屏幕旋转时,Activity和Fragment会重新创建并重新绘制。这可能会导致重复执行某些代码或导致数据丢失。为了解决这个问题,可以使用以下方法:
class MyViewModel : ViewModel() {
// 在这里定义需要保留的数据
}
class MyActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
viewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
// 使用viewModel中的数据
}
}
class MyActivity : AppCompatActivity() {
private lateinit var myData: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_my)
if (savedInstanceState != null) {
myData = savedInstanceState.getString("myData")
}
// 使用myData
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("myData", myData)
}
}
class MyFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
retainInstance = true
}
}
这是几种常用的解决方法,可以根据具体的需求选择适合的方法来解决Android屏幕旋转时重复执行的问题。