๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Android

Android::LifeCycle ํ™œ์šฉํ•˜์—ฌ App๋งŒ๋“ค๊ธฐ

by ๋„์บ๋ฆฌ๐Ÿฑ 2020. 7. 21.
๋ฐ˜์‘ํ˜•

โ— ์™„์„ฑํ•œ ๊ฒŒ์ž„ ๋ทฐ

 

 

โ— ์ฝ”๋“œ


1) MainActivity

package com.example.colortimergame_2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

    // for timer
    private static int MILLISNFUTURE = 10*1000; // ์ด์‹œ๊ฐ„
    private static int COUNT_DOWN_INTERVAL = 1000;  // Tick ์‹œ๊ฐ„
    private int count = 10;
    private int scorenum =0;

    private TextView timer;
    private TextView score;
    private CountDownTimer countDownTimer;
    private CountDownTimer countDownTimeronResume;
    static long millisecondsleft;
    boolean isPause = false;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().hide();

        timer = (TextView)findViewById(R.id.main_tv_timer);
        score = (TextView)findViewById(R.id.main_tv_score);
        Intent intent = getIntent();
        int getScore = intent.getIntExtra("score",0);
        scorenum = getScore;
        score.setText(String.valueOf(scorenum));



        Log.d("Life Cycle:","onCreate");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("Life Cycle:","onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("Life Cycle:","onResume");

        score.setText(String.valueOf(scorenum));

        // Pause ๊ฐ€ ์•„๋‹ˆ๋ฉด
        if(isPause == false)
        {
            countDownTimer = new CountDownTimer(MILLISNFUTURE,COUNT_DOWN_INTERVAL) {
                @Override
                public void onTick(long millisUntilFinished) {
                    millisecondsleft = millisUntilFinished;
                    timer.setText(""+String.format("%02d",millisUntilFinished/1000));
                }
                @Override
                public void onFinish() {
                    timer.setText("Finish.");
                }
            }.start();
        }
        else
        {
            countDownTimeronResume = new CountDownTimer(millisecondsleft,COUNT_DOWN_INTERVAL) {
                @Override
                public void onTick(long millisUntilFinished) {
                    Toast.makeText(MainActivity.this,"ONPAUSED",Toast.LENGTH_SHORT).show();
                    millisecondsleft = millisUntilFinished;
                    timer.setText(""+String.format("%02d",millisUntilFinished/1000));
                }
                @Override
                public void onFinish() {
                    timer.setText("Finish.");
                }
            }.start();
        }

        // computer turn ์ œ์‹œ
        TextView game_turn = findViewById(R.id.main_tv_game);
        String[] color_turn = {"R","G","B","Y","P"};
        int[] original ={0,1,2,3,4};
        for(int x=0; x<original.length;x++)
        {
            int i = (int)(Math.random()*original.length);
            int j = (int)(Math.random()*original.length);
            int tmp = original[i];
            original[i] = original[j];
            original[j]=tmp;
        }
        final String[] color_turn_result ={color_turn[original[0]],color_turn[original[1]],
                color_turn[original[2]],color_turn[original[3]], color_turn[original[4]]};
        String result_turn = color_turn[original[0]]+" "+
                color_turn[original[1]]+ " "+
                color_turn[original[2]]+ " "+
                color_turn[original[3]]+ " "+
                color_turn[original[4]]+" ";

        game_turn.setText(result_turn);
        Log.d("game Turn",result_turn);

        // ์‚ฌ์šฉ์ž turn ์–ป๊ธฐ
        final ArrayList user_turn = new ArrayList();
        ImageButton red_btn = (findViewById(R.id.main_btn_red));
        ImageButton blue_btn = (findViewById(R.id.main_btn_blue));
        ImageButton green_btn = (findViewById(R.id.main_btn_green));
        ImageButton yellow_btn = (findViewById(R.id.main_btn_yellow));
        ImageButton purple_btn = (findViewById(R.id.main_btn_purple));

        red_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                user_turn.add("R");
                Log.d("user input: ",String.valueOf(user_turn));
                if(user_turn.size() ==1)
                {
                    if(String.valueOf(user_turn.get(0)) != color_turn_result[0])
                    {
                        Intent intent = new Intent(MainActivity.this, EndActivity.class);
                        Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                        startActivity(intent);
                    }
                }

                if(user_turn.size() == 5)
                {
                    for(int i = 0; i<5; i++)
                    {
                        if(String.valueOf(user_turn.get(i)) != color_turn_result[i])
                        {
                            Intent intent = new Intent(MainActivity.this, EndActivity.class);
                            Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                            startActivity(intent);
                            break;
                        }
                    }
                    Intent intent = new Intent(MainActivity.this,MainActivity.class);
                    scorenum +=1;
                    intent.putExtra("score",scorenum);
                    Toast.makeText(MainActivity.this,"Match",Toast.LENGTH_SHORT).show();
                    startActivity(intent);
                }

            }
        });

        blue_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                user_turn.add("B");
                Log.d("user input: ",String.valueOf(user_turn));
                if(user_turn.size() ==1)
                {
                    if(String.valueOf(user_turn.get(0)) != color_turn_result[0])
                    {
                        Intent intent = new Intent(MainActivity.this, EndActivity.class);
                        Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                        startActivity(intent);
                    }
                }

                if(user_turn.size() == 5)
                {
                    for(int i = 0; i<5; i++)
                    {
                        if(String.valueOf(user_turn.get(i)) != color_turn_result[i])
                        {
                            Intent intent = new Intent(MainActivity.this, EndActivity.class);
                            Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                            startActivity(intent);
                            break;
                        }
                    }
                    Intent intent = new Intent(MainActivity.this,MainActivity.class);
                    scorenum +=1;
                    intent.putExtra("score",scorenum);
                    Toast.makeText(MainActivity.this,"Match",Toast.LENGTH_SHORT).show();
                    startActivity(intent);
                }
            }
        });

        green_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                user_turn.add("G");
                Log.d("user input: ",String.valueOf(user_turn));
                if(user_turn.size() ==1)
                {
                    if(String.valueOf(user_turn.get(0)) != color_turn_result[0])
                    {
                        Intent intent = new Intent(MainActivity.this, EndActivity.class);
                        Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                        startActivity(intent);
                    }
                }

                if(user_turn.size() == 5)
                {
                    for(int i = 0; i<5; i++)
                    {
                        if(String.valueOf(user_turn.get(i)) != color_turn_result[i])
                        {
                            Intent intent = new Intent(MainActivity.this, EndActivity.class);
                            Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                            startActivity(intent);
                            break;
                        }
                    }
                    Intent intent = new Intent(MainActivity.this,MainActivity.class);
                    Toast.makeText(MainActivity.this,"Match",Toast.LENGTH_SHORT).show();
                    scorenum +=1;
                    intent.putExtra("score",scorenum);
                    startActivity(intent);
                }
            }
        });

        yellow_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                user_turn.add("Y");
                Log.d("user input: ",String.valueOf(user_turn));
                if(user_turn.size() ==1)
                {
                    if(String.valueOf(user_turn.get(0)) != color_turn_result[0])
                    {
                        Intent intent = new Intent(MainActivity.this, EndActivity.class);
                        Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                        startActivity(intent);
                    }
                }

                if(user_turn.size() == 5)
                {
                    for(int i = 0; i<5; i++)
                    {
                        if(String.valueOf(user_turn.get(i)) != color_turn_result[i])
                        {
                            Intent intent = new Intent(MainActivity.this, EndActivity.class);
                            Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                            startActivity(intent);
                            break;
                        }
                    }
                    Intent intent = new Intent(MainActivity.this,MainActivity.class);
                    Toast.makeText(MainActivity.this,"Match",Toast.LENGTH_SHORT).show();
                    scorenum +=1;
                    intent.putExtra("score",scorenum);
                    startActivity(intent);
                }
            }
        });

        purple_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                user_turn.add("P");
                Log.d("user input: ",String.valueOf(user_turn));
                if(user_turn.size() ==1)
                {
                    if(String.valueOf(user_turn.get(0)) != color_turn_result[0])
                    {
                        Intent intent = new Intent(MainActivity.this, EndActivity.class);
                        Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                        startActivity(intent);
                    }
                }

                if(user_turn.size() == 5)
                {
                    for(int i = 0; i<5; i++)
                    {
                        if(String.valueOf(user_turn.get(i)) != color_turn_result[i])
                        {
                            Intent intent = new Intent(MainActivity.this, EndActivity.class);
                            Toast.makeText(MainActivity.this,"Not Match",Toast.LENGTH_SHORT).show();
                            startActivity(intent);
                            break;
                        }
                    }
                    Intent intent = new Intent(MainActivity.this,MainActivity.class);
                    scorenum +=1;
                    intent.putExtra("score",scorenum);
                    Toast.makeText(MainActivity.this,"Match",Toast.LENGTH_SHORT).show();
                    startActivity(intent);
                }
            }
        });



    }

    @Override
    protected void onPause() {
        super.onPause();

        if(countDownTimer != null)
        {
            countDownTimer.cancel();
            isPause = true;
        }
        if(countDownTimeronResume != null)
        {
            countDownTimeronResume.cancel();
        }
        Log.d("Life Cycle:","onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("Life Cycle:","onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("Life Cycle:","onDestroy");
    }
}

2) StartActivity

package com.example.colortimergame_2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import com.spark.submitbutton.SubmitButton;

public class StartActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
        getSupportActionBar().hide();

        SubmitButton btnStart = findViewById(R.id.start_btn_start);
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(StartActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });
    }
}

3) EndActivity

package com.example.colortimergame_2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import com.spark.submitbutton.SubmitButton;

public class EndActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_end);
        getSupportActionBar().hide();

        SubmitButton btnAgain = findViewById(R.id.end_btn_again);
        btnAgain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(EndActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€