버튼이있는 간단한 테스트 애플리케이션을 함께 치고 사용자가 클릭 할 때 소리가납니다. 이 while 루프에서처럼안드로이드 SDK의 애플리케이션 라이프 사이클 및 onCreate 메소드
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b = (Button)findViewById(R.id.easy);
b.setOnClickListener(this);
}
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(this, R.raw.easy);
mp.start();
while(true) {
if (!mp.isPlaying()) {
mp.release();
break;
}
}
}
내 질문은, 왜에서 onCreate 역할을한다 : 여기 방법입니다입니까? 나는 언제든지 버튼을 클릭 할 수 있으며 소리를 낸다. 아마 청취자의 속성이라고 생각할 수도 있지만 Button 객체는 멤버 변수가 아닙니다. 나는 안드로이드가 onse를 작성하고 다음 라이프 사이클 방법으로 진행할 것이라고 생각했다.
또한 사운드를 재생하는지 보는 현재의 방식은 쓰레기입니다 ... 나중에 알게 될 것입니다. :)
고맙습니다.
그것은 "당신이 while 루프를 필요가 없다"고 아니에요을 - 루프가 기본 응용 프로그램 스레드를 묶어 반면, 결국 원인 사용자 인터페이스를 동결 것을 가지고 너의 활동을 죽일 안드로이드. – CommonsWare
아, 고맙습니다. :) 어쨌든, 포인터를 제거했지만 개체 자체는 아니며 UI가 버튼, JVM (또는 JVM의 안드로이드 버전이라고하는 것이 무엇이든)에 대한 참조를 유지하기 때문에, 그것 주위에. 이 경우 버튼이 앱이 닫힐 때까지 지속되거나 활동이 종료 될 때까지 지속될 것입니다 (또는 화면에서 사라질 때까지). 다시 고마워. –
버튼의 수명은 해당 변수를 가리키는 변수의 수명과 같다고 생각하면됩니다. UI를 구성한 Android 프레임 워크 내의 메커니즘 (이 경우 만든 XML 파일에서 객체 그래프를 작성하고 화면에 표시)은 생성 된 객체의 라이프 사이클을 제어합니다. 이 경우 액티비티가 소유하므로 액티비티는 볼 수있는 한 범위 내에 있다고 상상합니다. 마찬가지로 리스너 객체는 참조가있는 한 범위 내에 있습니다. – Rich