public class MainActivity extends AppCompatActivity implements LifecycleOwner {
private LifecycleRegistry lifecycleRegistry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lifecycleRegistry = new LifecycleRegistry(this);
lifecycleRegistry.markState(Lifecycle.State.CREATED);
}
@Override
protected void onStart() {
super.onStart();
lifecycleRegistry.markState(Lifecycle.State.STARTED);
}
@Override
protected void onResume() {
super.onResume();
lifecycleRegistry.markState(Lifecycle.State.RESUMED);
}
@Override
protected void onPause() {
super.onPause();
lifecycleRegistry.markState(Lifecycle.State.STARTED);
}
@Override
protected void onStop() {
super.onStop();
lifecycleRegistry.markState(Lifecycle.State.CREATED);
}
@NonNull
@Override
public Lifecycle getLifecycle() {
return lifecycleRegistry;
}
}
public class MyViewModel extends ViewModel {
private MutableLiveData<String> data;
public LiveData<String> getData() {
if (data == null) {
data = new MutableLiveData<>();
loadData();
}
return data;
}
private void loadData() {
new Handler().postDelayed(() -> data.setValue("Hello World!"), 2000);
}
}
kotlin
@Composable
fun MyScreenContent() {
var name by remember { mutableStateOf("") }
Column(modifier = Modifier.padding(16.dp)) {
TextField(
value = name,
onValueChange = { name = it },
label = { Text("Enter your name") }
)
Spacer(modifier = Modifier.height(16.dp))
Text(text = "Hello, $name")
}
}
@Preview
@Composable
fun PreviewMyScreenContent() {
MyScreenContent()
}