/* @file ReconnectTask.java * * @author marco corvi * @date nov 2013 * * @brief TopoDroid Data downlod reconnection task * -------------------------------------------------------- * Copyright This sowftare is distributed under GPL-3.0 or later * See the file COPYING. * -------------------------------------------------------- */ package com.topodroid.DistoX; // import android.widget.Toast; import android.os.AsyncTask; public class ReconnectTask extends AsyncTask< String, Integer, Integer > { private DataDownloader mDownloader; private ReconnectTask running; ReconnectTask( DataDownloader downloader ) { mDownloader = downloader; running = null; } // ------------------------------------------------------------------- @Override protected Integer doInBackground( String... statuses ) { if ( ! lock() ) return null; if ( TDSetting.mAutoReconnect && TDSetting.mConnectionMode == TDSetting.CONN_MODE_CONTINUOUS ) { while ( mDownloader.needReconnect() ) { try { Thread.sleep( 500 ); // Log.v("DistoX", "notify disconnected: try reconnect status " + mDataDownloader.isDownloading() ); mDownloader.tryConnect( ); } catch ( InterruptedException e ) { } } } return 0; } @Override protected void onProgressUpdate( Integer... values) { super.onProgressUpdate( values ); } @Override protected void onPostExecute( Integer res ) { // if ( res != null ) { // int r = res.intValue(); // } mDownloader.notifyConnectionStatus( mDownloader.isConnected() ); unlock(); } private synchronized boolean lock() { if ( running != null ) return false; running = this; return true; } private synchronized void unlock() { if ( running == this ) running = null; } }