2015-05-04 48 views
0

我有一個訪問服務器的應用程序。當我退出應用程序時,我必須先從服務器斷開連接,然後關閉應用程序。Robospice服務正在運行,直到它完成應用程序完成後的工作

我想知道是否有可能(以及如何)使Robospice服務(後臺任務)與服務器斷開連接,即使應用程序已關閉(並且Robospice服務仍在運行以完成斷開連接,並且然後自動殺死自己)。

問題是斷開時間太長(有時超過5秒),我想避免在斷開連接期間阻塞電話,並允許用戶使用它的電話。

另一個問題:Robospice圖書館將在未來得到維護和改進(如有必要)?

在此先感謝。

回答

0

我用完成()

在我的MainActivity結束我的應用程序解決我的問題(!可能不是一個真正的問題),我用的Robospice服務:

private final class LogoutListener implements PendingRequestListener<String> { 

    @Override 
    public void onRequestFailure(SpiceException spiceException) { 
     Log.e(TAG, spiceException.getMessage());    
    } 

    @Override 
    public void onRequestSuccess(String result) { 
     // nothing special 
    } 

    @Override 
    public void onRequestNotFound() { 
     Log.w(TAG, "Not found"); 
    } 
} 

private void Alarm_Logout(boolean exit) { 
    Logout request = new Logout(url); 
    spiceManager.execute(request, new LogoutListener()); 
    this.finish(); 
} 

而且Lougout類:

public class Logout extends OkHttpSpiceRequest<String> { 

    private String url_logout; 

    public Logout(String url) { 
     super(String.class); 
     this.url_logout = url; 
    } 

    @Override 
    public String loadDataFromNetwork() throws Exception { 

     OkHttpClient client = new OkHttpClient(); 
     Request request = new Request.Builder() 
       .url(url_logout) 
       .build(); 
     Response response = client.newCall(request).execute(); 
     return "ok"; 

    } 

} 

之前,我關閉了應用程序與System.exit(0)onRequestSuccess,所以我不得不等待註銷完成。現在應用程序關閉(與完成()),但註銷繼續在後臺,然後,當完成後,服務完成...

0

是的,RoboSpice在連接到服務上下文時也可以正常工作,因爲它與活動一起工作。 但是,您應該嘗試在您的實施方法的com.octo.android.robospice.SpiceService#onDestroy方法中執行斷開連接。只要沒有有意義的工作要做,就會停止這項服務,所以我想這對你的用例來說是最合適的解決方案。

+0

謝謝,我會嘗試... – Christian

相關問題