1
我有一個與LongPoll一起工作的服務,當我收到我的數據時,一切正常,但是當我沒有收到數據,而是我收到空結果長時間輪詢最大時間== 25秒)我的服務有時會手動關閉(我沒有在服務列表中看到它)。Android服務在功能工作時間超過(約)15秒時關閉
那麼,如何保持此服務(..always ..)運行?
遞歸函數,這與長輪詢並在服務的onCreate()
(結構)首先調用工作:
//"u" is "new utils()".
public class myservice extends Service {
public static boolean started=false;
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this, "created qweqwe", Toast.LENGTH_LONG).show();
longpoll();
this.started=true;
}
@Override
public void onDestroy() {
super.onDestroy();
this.started=false;
}
private String url = "http://example.com/lp.php";
private void longpoll() {
try {
String resp = u.getData(url); //max time of working u.getData(lpurl) - 25s.
if (resp.length()>0) doSmthWithData(resp); //It works fine
} catch(Exception e) {}
longpoll();
}
}
我已經更新了代碼。如果(!myservice.started)它從主要活動開始。不是服務的後臺線程? –
@anony_root:「服務不是後臺線程嗎?」 - 不它不是。從用戶界面的角度來看,服務是在後臺。它們不在主應用程序線程的後臺。 'onStartCommand()'和一個服務的所有其他生命週期方法在主應用程序線程上調用 - 這是爲您的UI提供動力的相同主應用程序線程。而且,也適用相同的規則:每一毫秒你綁定該線程凍結用戶界面,並且如果你在該線程上花費很長時間,你將被終止。 – CommonsWare
最後一件事:我可以從後臺線程創建通知嗎? –