마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 스튜디오 앱 시간 구동

0 추천
안드로이드 스튜디오 안에 시간 코딩도 다 넣었고 앱을 실행시켰는데 시간구동은 안되고 0:00 만 뜨네요 이거 어떻게 시간이 뜨게 하는걸까요 도와주시면 너무 감사하겠습니다ㅠㅠ
뚝이임 (140 포인트) 님이 2022년 6월 2일 질문
질문과 관련된 코드도 올려보세요.

2개의 답변

0 추천

여러가지 접근방법이 있을 수 있을 것 같은데, 가장 간단할 것 같은 방법 중의 하나로 구현을 하면(참고로 코틀린입니다)

import java.text.SimpleDateFormat
import java.util.*


class MainActivity : AppCompatActivity() {

   private val timeFormat = SimpleDateFormat("HH:mm:ss")
   private var timer: Timer? = null

    override fun onStart() {
        super.onStart()
        startDisplayingTime()
    }

    private fun startDisplayingTime() {
        timer = Timer()
        timer?.schedule(createTimerTask(), 0, 1000)
    }

    override fun onStop() {
        super.onStop()
        stopDisplayingTime()
    }

    private fun stopDisplayingTime() {
        timer?.cancel()
    }

   private fun createTimerTask() = object: TimerTask() {
        override fun run() {
            runOnUiThread {
                supportActionBar?.title = timeFormat.format(Date())
            }
        }
    }
}

 

간단한 코드이므로 참조용으로 사용하시기 바랍니다.

spark (227,930 포인트) 님이 2022년 6월 2일 답변
자바 쓰고 있어요 ㅠㅠ
0 추천

Java 버전은 아래처럼 될 것 같네요. 약간의 문법 오류가 있을 수 있습니다.

public class MainActivity extends AppCompatActivity {
 
   private final DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss")
   private Timer timer = null;
 
    @override
    protected void onStart() {
        super.onStart();
        startDisplayingTime();
    }
 
    private void startDisplayingTime() {
        timer = new Timer();
        timer.schedule(createTimerTask(), 0, 1000);
    }
  
    @override
    protected void onStop() {
        super.onStop();
        stopDisplayingTime();
    }
 
    private void stopDisplayingTime() {
        timer.cancel();
    }
 
    private TimerTask createTimerTask() {
        return new TimerTask() {
            @Override
            public void run() {
                displayTimeOnUiThread(new Date());
            }
        };
   } 

   private void displayTimeOnUiThread(Date date) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                // 표시하고 싶은 뷰로 변경
                getSupportActionBar().setTitle(timeFormat.format(date));
            }
        });
   }
}

 

spark (227,930 포인트) 님이 2022년 6월 3일 답변
spark님이 2022년 6월 4일 수정
...