gpt4 book ai didi

Android 长轮询 - 超时执行服务

转载 作者:搜寻专家 更新时间:2023-11-01 08:14:59 24 4
gpt4 key购买 nike

我正在尝试在我的 Android 应用程序中实现 LongPolling。 Long Polling

如果 LongPolling 需要很长时间才能得到答案,我的 android 服务就会崩溃。

我尝试使用线程和异步。一般来说,我尝试了很多工作人员,但我不明白。

public class PollingService extends Service {

String TAG = "AndroidPolling";
int CONNECTION_TIMEOUT = 900000;
int mHeartbeat = 10000;
int TIMEOUT_TOLERANCE = 5000;
String mPushURL = "http://192.168.0.115:8080/de.test.jersey.cti/rest/todos/";


@Override
public void onCreate() {
super.onCreate();
Log.i( TAG, "RestService Service-Class created");

}

public void onStart(Intent intent, int startId) {
Log.i(TAG, "onStart");

new makepolling().doInBackground("http://192.168.0.115:8080/de.test.jersey.cti/rest/todos/");

}


@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}

class makepolling extends AsyncTask<String, String, String> {

String TAG = "AndroidPolling";
int CONNECTION_TIMEOUT = 900000;
int mHeartbeat = 10000;
int TIMEOUT_TOLERANCE = 5000;
String mPushURL = "http://192.168.0.115:8080/de.test.jersey.cti/rest/todos/";

@Override
protected String doInBackground(String... arg0) {
String result = null;
DefaultHttpClient def = new DefaultHttpClient();
HttpParams httpParams = def.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, CONNECTION_TIMEOUT);

ConnManagerParams.setTimeout(httpParams, CONNECTION_TIMEOUT);
HttpGet httpGet = new HttpGet(mPushURL);
httpGet.addHeader("Accept", "application/json");

try {
Log.i(TAG, "Executing GET(PUSH) request " + httpGet.getRequestLine());

HttpResponse httpResponse = def.execute(httpGet);
Log.i(TAG, result);
Log.i(TAG, String.valueOf(httpResponse.getProtocolVersion()));
Log.i(TAG, String.valueOf(httpResponse.getEntity().getContent())); //For testing purposes


} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return result;

}

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub

super.onPostExecute(result);
}

}

最佳答案

您不应显式调用 doInBackground()。要启动 AsyncTask,您必须创建它的一个实例并对其调用 execute() 方法。 This文章很好地解释了 AsyncTask。

关于Android 长轮询 - 超时执行服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5598333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com