我有一個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