【在线等】安卓客户端与服务器交互方式的选择
需求:实现客户端不断与服务器交互获得实时数据
实现:我在后台Service中采用TimerTask类每隔一段时间就去服务器请求数据,请求那块用HttpClient,但发现这样不但应用的响应速度慢,而且应用运行一段时间后就会出现ConnectError的错误,出现错误之后,应用就不再向服务器请求数据。
思考:百度查到还可以用Socket和WebService
但是Socket涉及到服务器数据库的安全问题
WebService只写过客户端没写过服务器
哪种方式比较好,求大神赐教 服务器 Android 交互?
[解决办法]
另外你的思路好像有点问题。我做过这样的功能,应该是在主界面中启动一个TimerTask定时器发送一个广播(该定时器在应用程序的一个生命周期内只启动一次),然后广播接收器去开启service,然后网络操作写在服务的onStart方法里面。
activity中代码
//flag用来控制该定时器只启动一次
if (flag) {
Intent intent = new Intent(Main.this, AlamrReceiver.class);//AlamrReceiver是个广播接收器
PendingIntent pi = PendingIntent.getBroadcast(Main.this, 0, intent,0);
AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(),(5 * 60 * 1000), pi);
flag = false;
}
public class AlamrReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
intent.setClass(context, service.class);//service是服务
context.startService(intent);
}
}
@Override
public void onStart(Intent intent, int startId) {
Thread t = new Thread(new updateRunnable(intent));//启动线程做网络操作
t.start();
onDestroy();
super.onStart(intent, startId);
}