"안녕하세요 세상"스타일 앱에 간단한 Observer 패턴을 구현했습니다.옵저버를 사용하여 UI를 업데이트하려면 어떻게해야합니까?
나는 Service
에 onStart()
과 onDestroy()
을 호출하는 2 개의 버튼이 있습니다.
onStart()
에서 관찰자를 등록한 다음 내 관찰자에게 for 루프를 실행하여 observe.update()
을 10 초 동안 1 회씩 실행하도록합니다. 이것은 내 서비스에서 update()
메소드를 호출합니다.
I가 반환됩니다 일부 더미 데이터를 표시하기 위해 노력하고있어,하지만 난 다음 오류 받고 있어요 :
11-26 23:21:12.829: ERROR/AndroidRuntime(676): FATAL EXCEPTION: Thread-8
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.widget.Toast.<init>(Toast.java:68)
at android.widget.Toast.makeText(Toast.java:231)
at com.jameselsey.observerpattern.LocalService.observe(LocalService.java:27)
at obs.Stub$1.run(Stub.java:49)
at java.lang.Thread.run(Thread.java:1096)
나는 내 서비스에 다음과 같은 일을 해요 :
public void observe(String message)
{
Context context = getApplicationContext();
Log.d("TEST", "Inside observe() on service, value is " + message);
Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.show();
}
을 약간의 연구 끝에이 메소드가 기본 UI 스레드에서 실행되지 않으므로 Toast 메시지를 작성할 수없는 것 같습니다.
내 UI에 message
을 뱉어 버릴 수 있습니까? 난 그냥 activitiy에 표시를 찾고 있는데, 심지어 일반 textView 괜찮습니다.
onStart() 및 onDestroy()를 직접 호출하지 마십시오. 그것은 대단히 나쁜 것입니다. – Falmarri
안녕하세요 Falmarri, 나는 하나의 액티비티에있는 메소드에 매핑 된 2 개의 버튼을 가지고 있는데, 그 액티비티들은 onStart/onDestroy를 호출합니다. 아직도 나쁜가요? 무엇이 최고인가? .. – Jimmy