클래스를 다음과 같이 정의했습니다. 코드 페이지가 있지만 가독성을 위해 관련 부분 만 게시하고 있습니다.runOnUIThread를 사용하기 위해 Activity를 소모하는 데 문제가 있습니까?
지금은 그다지 틀린 것은 없지만 그다지 효과적입니다.하지만 누군가 며칠 전 내가가는 수업에 '활동'을 확장하는 것이 좋지 않다고했습니다. 객체 만들기 (즉, 인스턴스를 만들 클래스) - 코드의 어느 시점에서 MyGLRenderer 객체를 만듭니다.
그래서 내 질문은 : 그것은 활동을 확장하는 '나쁜'
1)인가?
2) 만약 그렇다면 왜? 그렇다면
3), 어떻게 내 soundPool 클래스를 만들 runOnUIThread를 사용할 수 있습니까?
그렇다면 괜찮습니다.하지만 잠재적으로 커다란 문제가 발생할 수있는 경우 다른 사람이 내게 액세스 할 수있는 방법을 알려 주시면 감사하겠습니다.
(내 클래스는 외부 및 내부 클래스가 아닌 별도의 파일이므로이 클래스의 모든 initiallisation이있는 것처럼이 클래스에서 SoundPool 객체를 만들어야합니다.)
코드
public class MyGLRenderer extends Activity implements GLSurfaceView.Renderer{
//Various pieces of code
public void onSurfaceChanged(){
runOnUiThread(new Runnable() {
public void run() {
sound = new soundMan(curView.getContext());
}
}
안녕하세요 @ CommonSWare - 감사합니다. 매우 유익합니다. 감사합니다. 이상하게도, 내 주요 활동에는 startActivity()가 없습니다!어쨌든 runOnUIThread를 사용하기 위해 대체 (읽기 : 올바른) 방법을 사용하는 방법을 보여 주실 수 있습니까? 감사합니다. – Zippy
@Zippy : "이상한, 내 주요 활동에 startActivity()가 없습니다. "-'startActivity()'는 누군가가 활동을 표시하기 위해 호출하는 것입니다. 예를 들어, 홈 화면은 사용자가 시작했을 때 "startActivity()"를 호출하여 "주 활동"을 시작합니다. "어쨌든 대안을 사용하는 방법을 보여 주실 수 있습니까?"-'post()'는 방법입니다. 'Handler' 또는'View'에서 호출합니다. 여기서'View'는 모든 위젯과 컨테이너의 기본 클래스입니다. runOnUiThread()와 함께 사용하는'Runnable'과 같은 종류의'post()'를 전달합니다. – CommonsWare
Gotya, 지금 이해하고 있는데, 어떻게 작동하는지 (post()/runnable) 예제를 찾으려고 노력했지만 작동하지 않는 것 같습니다. 내가 구현할 수있는 방법을 보여주기 위해 답을 편집 할 수 있습니까? 이게 내 코드에요? 나는 시도했지만 '루퍼를 호출하지 않은 스레드 내부에서 핸들러를 생성 할 수 없습니다.'는 UI 스레드에서 생성해야하는 이유입니다. 고맙습니다. – Zippy