Aklım karıştı Neden aktivitem hala devam ediyor, birkaç yönteme sahip uzaktan servisi kullanıyorum ve her şey indirme işleri, işlem verileri, karşılaştırmalar, vb. Gibi kendi çalışmalarına sahip ... Arka planda çalışacak ve verileri güncelleyecek seçilen aralıklarla sisteme bildirimde değişiklik bildirir.Hizmetimde ve handler.post yönteminde bir şeyler çalıştırdığımda neden etkinliğim hala devam ediyor?
Uzaktan hizmet neden, nedeni sonunda bir widget ekleyeceğim ve android etkinliğini öldürse bile hizmetin çalışmaya devam etmesi gerekiyor, bu yüzden her onPause() 'da bunu çözüyorum. Ama bildiğim kadarıyla bu bölüm benim sorunuma neden olmaz.
Ama benim sorunuma dönelim ... bu yüzden hizmet ve handler.post yönteminde bir şeyler yürüttüğümde etkinlik hala devam ediyor. Burada
kodudur:public class WarnService extends Service {
private Bitmap pic;
private boolean dataUpToDate;
private void loadData(){
//code that downloads new data and sets the dataUpToDate variable
}
private void updateLayer(Bitmap bt){
//code that updates some stuff if downloaded and local data differ
}
private IWarnService.Stub WServiceStub = new IWarnService.Stub() {
@Override
public void refreshData() throws RemoteException {
serviceHandler.post(new Runnable() {
@Override
public void run() {
loadData();
if(!dataUpToDate){
updateLayer(pic);
}
}
});
}
}
}
Ayrıca ben progressDialog eklemek istedim Aktivite yoluyla updateLayer (...) bu hizmete bir dinleyici olduğunu güncellenmesi, ama iyi çalışan thats. ProgressDialog'u güncellemenin en iyi yolu nedir? Hiç dinleyici, işleyici, niyet, ya da ne?
Bunu nasıl doğru şekilde yapabilirim? Hizmetiniz arka planda bazı ağır işleme sahipse, etkinliğiniz hala biraz gecikme yaşayabilir.
Ben Process.setThreadPriority (Process.THREAD_PRIORITY_BACKGROUND) ekledim; run() içine ve hiçbir şey değişmedi. Yöntemlerimin hala GUI dizisinde çalıştığından eminim, neden emin değilim. – danizmax