MainActivity:
package com.example.lifecycle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private static final String B_Stop = "isstop_b";
private static final String C_Stop = "isstop_c";
private static final String TAGG = "tagg";
private static final String MESSAGE = "m";
private static final int REQUEST_CODE_COMMAND_B = 0;
private static final int REQUEST_CODE_COMMAND_C = 1;
private static final String EXTRA_COMMAND = "com.example.my_app.command";
private TextView mShowList;
private TextView mShowStatus;
private Button mButtonA;
private Button mButtonB;
private Button mButtonC;
private Button mDialog;
private boolean mStopA=false;
private boolean mStopB=false;
private boolean mStopC=false;
private String message;
private int command = 0;
private int mCallA = 1;
private int mReceive_call = 0;
private int mReceive_back = 0;
private void showExitDialog01(){
new AlertDialog.Builder(this)
.setTitle("暂停")
.setCancelable(false)
.setMessage("已经暂停Activity A!")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
show_status();
mShowStatus.append("Activity A: Resumed");
mShowList.append("Activity A:onResume()\n");
}
})
.show();
}
private void showExitDialog02(){
new AlertDialog.Builder(this)
.setTitle("提示")
.setCancelable(false)
.setMessage("Activity B 正在暂停中")
.setPositiveButton("确定", null)
.show();
}
private void showExitDialog03(){
new AlertDialog.Builder(this)
.setTitle("提示")
.setCancelable(false)
.setMessage("Activity C 正在暂停中")
.setPositiveButton("确定", null)
.show();
}
private void show_status(){
mShowStatus.setText(null);
if(mStopB == true){
mShowStatus.append("Activity B: Stopped\n");
}
if(mStopC == true){
mShowStatus.append("Activity C: Stopped\n");
}
}
public static Intent newIntent(Context packageContext, boolean StopB, boolean StopC, String message, int receive){
Intent i = new Intent(packageContext, MainActivity.class);
i.putExtra(B_Stop, StopB);
i.putExtra(C_Stop, StopC);
i.putExtra(MESSAGE, message);
i.putExtra(TAGG, receive);
return i;
}
private void setCommand(int command){
Intent data = new Intent();
data.putExtra(EXTRA_COMMAND, command);
String temp = mShowList.getText().toString();
data.putExtra(MESSAGE, temp);
setResult(RESULT_OK, data);
}
public static int getCommand(Intent result){
return result.getIntExtra(EXTRA_COMMAND, 0);
}
public static String getMessage(Intent result){
return result.getStringExtra(MESSAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode != Activity.RESULT_OK){
return;
}
if(requestCode == REQUEST_CODE_COMMAND_B){
if(data == null){
return;
}
command = BActivity.getCommand(data);
message = BActivity.getMessage(data);
if(command == 1){
mShowList.setText(message);
}
mReceive_back = 2;
mShowList.append("Activity B.onPause()\n");
}else if(requestCode == REQUEST_CODE_COMMAND_C){
if(data == null){
return;
}
command = CActivity.getCommand(data);
message = CActivity.getMessage(data);
if(command == 1){
mShowList.setText(message);
}
mReceive_back = 3;
mShowList.append("Activity C.onPause()\n");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
message = getIntent().getStringExtra(MESSAGE);
mStopB = getIntent().getBooleanExtra(B_Stop, false);
mStopC = getIntent().getBooleanExtra(C_Stop, false);
mReceive_call = getIntent().getIntExtra(TAGG,0);
mShowList = (TextView)findViewById(R.id.show_list);
mShowStatus = (TextView)findViewById(R.id.show_status);
mButtonA = (Button)findViewById(R.id.button_a);
mButtonA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setCommand(1);
finish();
}
});
mButtonB = (Button)findViewById(R.id.button_b);
mButtonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mStopB == true){
showExitDialog02();
return;
}
String show_list = mShowList.getText().toString();
mStopA = true;
Intent i = BActivity.newIntent(MainActivity.this, mStopA, mStopC, show_list, mCallA);
startActivityForResult(i, REQUEST_CODE_COMMAND_B);
}
});
mButtonC = (Button)findViewById(R.id.button_c);
mButtonC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mStopC == true){
showExitDialog03();
return;
}
String show_list = mShowList.getText().toString();
mStopA = true;
Intent i = CActivity.newIntent(MainActivity.this, mStopA, mStopB, show_list, mCallA);
startActivityForResult(i, REQUEST_CODE_COMMAND_C);
}
});
mDialog = (Button)findViewById(R.id.button_dialog);
mDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
show_status();
mShowStatus.append("Activity A: Paused");
Intent i = new Intent(MainActivity.this, Dialog.class);
startActivity(i);
}
});
if(message != null) {
mShowList.append(message);
}
if(mReceive_call == 2){
mShowList.append("Activity B:onPause()\n");
}else if(mReceive_call == 3){
mShowList.append("Activity C: onPause()\n");
}
Log.d(TAG, "onCreate(Bundle) called");
mShowList.append("Activity A.onCreate()\n");
show_status();
mShowStatus.append("Activity A: Resumed\n");
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, "onStart() called");
mShowList.append("Activity A.onStart()\n");
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause() called");
mShowList.append("Activity A.onPause()\n");
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume() called");
mShowList.append("Activity A.onResume()\n");
if(mReceive_call == 2){
mShowList.append("Activity B:onStop()\n");
}
else if(mReceive_call == 3){
mShowList.append("Activity C: onStop()\n");
}
if(mReceive_back == 2){
mShowList.append("Activity B.onStop()\n");
mShowList.append("Activity B.onDestroy()\n");
}else if(mReceive_back == 3){
mShowList.append("Activity C.onStop()\n");
mShowList.append("Activity C.onDestroy()\n");
}
mReceive_call = 0;
mReceive_back = 0;
show_status();
mShowStatus.append("Activity A: Resumed");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop() called");
mShowList.append("Activity A.onStop()\n");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy() called");
mShowList.append("Activity A.onDestroy()\n");
}
}