1. 对Activity生命周期的理解
onCreate : 在Activity被创建时回调,做一些初始化的操作
onStart : Activity正在启动时,此时Activity已处于可见状态,只是还没有在前台显示,因此无法与用户进行交互
onResume : Activity已在前台可见,可与用户交互了
onPause : Activity正在停止,一般情况下onStop方法会紧接着被回调
onStop : 一般在onPause方法执行完成直接执行,表示Activity即将停止或者完全被覆盖
此时Activity不可见,仅在后台运行。在onStop方法可以做一些资源释放的操作
onRestart : Activity正在重新启动,当Activity由不可见变为可见状态时,该方法被回调。当打开了一个新的Activity时,当前的Activity就会被暂停(onPause和onStop被执行了),接着又回到当前
Activity页面时,onRestart方法就会被回调
onDestroy : 此时Activity正在被销毁,在此方法中做一些回收工作和最终的资源释放
代码演示
itemActiviy
package com.example.work2;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class itemActivity extends AppCompatActivity {
private Button button;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("lyt","onCreate,初始化页面");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item);
textView=findViewById(R.id.itemtextView2);
button=findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(itemActivity.this,resulteActivity.class);
test.launch(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.d("lyt", "onStart,create后执行");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("lyt","Onrestart,重新回到程序会执行这个方法");
}
@Override
protected void onResume() {
super.onResume();
Log.d("lyt", "onResume,在onStart后面执行");
}
@Override
protected void onPause() {
super.onPause();
Log.d("lyt", "onPause,按HOME和BACK执行");
}
@Override
protected void onStop() {
super.onStop();
Log.d("lyt", "onStop,按HOME和BACK执行");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("lyt", "onDestroy,生命周期结束");
}
public ActivityResultLauncher test = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>(){
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == 888){
Log.i("lyt","onActivityResultLauncher...");
textView.setText(result.getData().getStringExtra("data"));
}
}
});
}
使用log展示生命周期的状态变化
2. 实现列表项的单项点击功能
在列表的单项上绑定onclick 并且跳转到itemActivity
Adapter
package com.example.work2;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class Adapter extends RecyclerView.Adapter<Adapter.myviewholder> {
private List<String> list;
private Context context;
private View inflater;
public Adapter(Context context, List<String> list) {
this.context = context;
this.list = list;
}
@Override
public myviewholder onCreateViewHolder(ViewGroup viewGroup, int i) {
inflater = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);
myviewholder myviewholder = new myviewholder(inflater);
return myviewholder;
}
@Override
public void onBindViewHolder(myviewholder myviewholder, int j) {
myviewholder.textView.setText(list.get(j));
myviewholder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(context,itemActivity.class);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
class myviewholder extends RecyclerView.ViewHolder{
TextView textView;
public myviewholder( View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView2);
}
}
}
3. 实现最新的activityforresult功能
resulteActivity
package com.example.work2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import java.util.Calendar;
public class resulteActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
Intent intent = getIntent();
intent.putExtra("data","作业2:Activity的生命周期与跳转。\n"+"提交时间为:"+
Calendar.getInstance().getTime()+"\n20计科刘懿霆");
setResult(888,intent);
finish();
}
}