我有一个MyService命名的类,它扩展了下面的Service。一切都会一直运行到 我删除线程的run方法中的行。从Android的服务类的线程访问活动中的UI组件
为什么?我怎样才能从Thread类的run方法访问Activity组件?
public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) { return null; }
@Override
public void onCreate() {
Toast.makeText(this, "This msg will be shown", Toast.LENGTH_LONG).show();
Log.d("Bilgi", "This msg will be shown.");
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Toast.makeText(this, "This msg will be shown", Toast.LENGTH_LONG).show();
super.onStart(intent, startId);
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
Log.d("This msg will ","be shown"); //if I remove next line
Toast.makeText(this, "This msg will NOT be shown", Toast.LENGTH_LONG).show();
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, 5000, 8000);
}
能否通过[扩展binder类](https://developer.android.com/guide/components/bound-services.html#Binder)来使用绑定服务? Android文档似乎暗示了当“您的服务仅仅是您自己的应用程序的后台工作人员”时,使用'Messenger'的方法。 – AST 2016-07-26 13:38:32
@AST:这将是另一种选择,就像事件总线一样。 – CommonsWare 2016-07-26 13:53:10