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

handler.postdelayed 및 기타 몇초후 실행관련 메소드에 대해 질문이 있습니다.

0 추천
좋은 답변을 통해 많은 지식 알아가고 있습니다 감사합니다.

 

요 밑 5개정도 글 전에 다른클래스를 사용할때 null pointer가 나는것에 대해 질문한 사람입니다.

 

내용이 약간 다른질문이므로 새로운 글을 작성하였습니다.

 

글쓰기전에 구글이나 네이버 블로그한번씩 다 뒤져보는데 잘 모르는것이 너무 많네요.

 

 

이번의 질문을 위해 이전 질문에 대한 요약을 살짝하자면

어떠한 센서에대한 사용자의 입력이 몇분간 없으면 동영상을 정지하는것이 목적인 앱으로써

A클래스는 센서, B클래스는 영상에 대한 내용입니다.

 

시범적으로 약 10초후에 센서값을 측정했을때 입력내용이 없으면 B클래스의 mediaplayer.pause()를 불러오는게

목적이었으며

 

handler의 postdelayed를 썼습니다.

답변자분들께서 도와주셔서 다른클래스의 정지가 안불러와지는건 mediaplayer를 스태틱으로 정의하여 해결했고

메모리를 무지막지하게 잡아먹는것역시 해결했습니다.

 

여기서 이번 질문이 있습니다.

센서값은 OnSensorChanged(SensorEvent event)에서 처리합니다.

 

예시를 좀 들자면

@Override

public void onSensorChanged(SensorEvent event){

    switch(event.sensor.getType()){

    case Sensor.TYPE_GYROSCOPE:

          float g = 자이로센서 계산값;

    break;

 

    case Sensor.TYPE_GRAVITY:

      ....

     }

이런식인데요

 

현재  

 

 자이로 센서 구하는곳에 같이 Handler와 Runnable을통해 10초후에

  if문을 통해 g 가 0.7이하면 정지, 아니면 실행으로 해놨는데

 

 문제는 Runnable안의 g값역시 10초 이전의 것을 받아온다는 것입니다.

  예상컨데 g를 구하는 값이 runnable안에없기때문에 10초 후 실행했을때

   이전의 g값을 받는것이 아닐까라고 추측하는데요.

  어차피 g값은 OnSensorChanged내부에서 계속 돌아야하기때문에

   원래의 g값계산은 냅두고

   runnable 안에도 g1 이런식으로 또 계산하게 만들어야하나요?

 

   CountDownTimer나 TimerTask등 시간지연 메소드는 여러가지가 있는것으로  알고있습니다. 이것들도

   딜레이 방식이 전부 마찬가진지도 여쭤보고싶습니다.
심슨사랑 (690 포인트) 님이 2015년 4월 14일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...