联网框架用的是Retrofit,每秒连接网络一次:
方法有两种:第一种是用线程池(推荐:这种方法不会发生线程阻塞)
通常核心线程数可以设为CPU数量+1,而最大线程数可以设为CPU的数量*2+1。 获取CPU数量的方法为:Runtime.getRuntime().availableProcessors();
int processors = Runtime.getRuntime().availableProcessors(); int poolNum = processors / 2 + 1; Log.d("poolNum",poolNum+"processors"+processors); pool = Executors.newScheduledThreadPool(poolNum);//开启定时和周期性执行任务的线程 pool.scheduleAtFixedRate(new Runnable() {//scheduleAtFixedRate()保证调度时间 @Override public void run() { //联网操作 } },5000,1000, TimeUnit.MILLISECONDS);//5秒后执行任务,以后每间隔一秒重复执行任务//在onDestroy()中 关闭线程池
@Override protected void onDestroy() { super.onDestroy(); pool.shutdownNow(); }
第两种方法:(试用于不联网的定时完成任务 如:60秒内发送激活码; 下面的方法在联网中出现程序崩溃)
Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() {//联网操作
}},5000,3000);//在onDestroy()中 关闭任务线程
@Override protected void onDestroy() { super.onDestroy(); timer.cancel(); }