安卓第二次实验 生命周期

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";//处理接收的值,判断是谁start了自己
    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;//a为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(){//显示Activity 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);

        //获取intent信息
        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() {//若点击finish a
            @Override
            public void onClick(View view) {
                setCommand(1);
                finish();//直接finish
            }
        });

        mButtonB = (Button)findViewById(R.id.button_b);
        mButtonB.setOnClickListener(new View.OnClickListener() {//若点击start b
            @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() {//若点击start c
            @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");
                showExitDialog01();
                onPause();*/

                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");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值