안드로이드 개발 질문/답변
(글 수 45,052)
쓰래드 내에서 context를 어떻게 적용해야 할 지 모르겠어요.
코드 내에서 붉은색으로 표기된 부분인데요, 지금 이런 식으로 적용하니 어플이 다운되어 버립니다.
해결방법이 없을까요...
public class MorseThread implements Runnable {
private final Context context = this.getContext();
private Camera cam;
public void run() {
morseCharacterSend();
}
public void morseCharacterSend() {
SoundPool soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
int beepShort = soundPool.load(context, R.raw.beepsound, 1);
}
}




우선 애플리케이션 정보를 담을 수 있는 상태가 아니죠
그러므로 this.getContext(); 에서 오류가 나야 정상처럼 보입니다.
생성자로 넘겨보세요.
즉석코드라 문법이 잘 맞을지는 모르겠네요.
public class MorseThread implements Runnable {
private Camera cam;
private Context mContext = null;
public MorseThread(Context context) {
mContext = context;
}
public void run () ~~ 블라블라~~
}
객체생성시 인자값을 넘겨야겠죠
다른 액티비티 onCreate() 같은 함수 내에서
Context context = this;
로 변수하나 만들어주시던가 아니면 그냥
MorseThread morseThread = new MorseThread(this);
morseThread.start();
요런식으로 해주시면 되겠네요.
(굵게 칠한 this 인자값 대신에 변수를 선언했다면 context 변수를 넣으면되겠죠