我在“hello world”风格的应用程序中实现了一个简单的观察者模式。
我有 2 个按钮,分别调用onStart()
和onDestroy()
在Service
.
在onStart()
我注册一个观察者,然后让我的观察者observe.update()
每秒运行一次 for 循环调用,持续 10 秒。这反过来又调用了update()
我的服务中的一个方法。
我正在尝试显示一些返回的虚拟数据,但出现以下错误:
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();
}
经过一番研究,我似乎无法创建 Toast 消息,因为此方法不在主 UI 线程上运行。
反正我可以吐message
到我的用户界面上吗?我只是想让它显示在活动中,即使是常规的 textView 也可以。