目录
一. Activity的生命周期
Activity表现为四种状态:
- 活动状态Active
- 暂停状态pause
- 停止状态Stop
- 非活动状态Dead
Activity生命周期图解:
在Activity中添加log展示生命周期的变化:
@Override
protected void onStart() {
super.onStart();
Log.d("yun","Onstart:MainActivity");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("yun","Onrestart:MainActivity");
}
@Override
protected void onResume() {
super.onResume();
Log.d("yun","Onresume:MainActivity");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("yun","Ondestroy:MainActivity");
}
@Override
protected void onPause() {
super.onPause();
Log.d("yun","Onpause:MainActivity");
}
@Override
protected void onStop() {
super.onStop();
Log.d("yun","Onstop:MainActivity");
}
二. RecyclerView上的Activity跳转
实现功能:
新建一个Activity,recyclerview中的某一项点击后跳转到该Activity。
设计思路:
1.在适配器myAdapter的OnBindViewHolder中对每个item进行监听;
2.创建Itent以启动指定的Activity;
3.利用Itent向Activity中传递数据;
4.向startActivity()函数传递Itent以启动Activity实现跳转;
holder.img3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listr.add(str);
Intent intent=new Intent(context,MainActivity_music.class);
intent.putExtra("music",str);
context.startActivity(intent);
}
});
5.在新Activity中添加log展示跳转时的生命周期。
实现效果:
生命周期的变化:
三. ActivityForResult功能实现
实现功能:
新建Activity,设计按钮收到该Activity的回值。
实现效果:
点击更新按钮,获取点赞量和收藏量。
设计思路:
1.设计ActivityForResult获得Activity2的回值;
public ActivityResultLauncher test= registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if(result.getResultCode()==25){
TextView textView_like=findViewById(R.id.textView_like);
textView_like.setText(result.getData().getStringExtra("like"));
TextView textView_collection=findViewById(R.id.textView_collect);
textView_collection.setText(result.getData().getStringExtra("collection"));
};
}
}
);
2.在Activity1中进行监听;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent re_intent=new Intent(MainActivity_music.this,MainActivity_re.class);
test.launch(re_intent);
}
});
3.在Activity2中设置ResultCode以及返回的数据;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_re);
int str1= (int) (Math.random()*1000);
int str2= (int) (Math.random()*100);
Intent intent=getIntent();
intent.putExtra("like","点赞数: "+str1);
intent.putExtra("collection","收藏数: "+str2);
setResult(25,intent);
finish();
}
}
效果展示: