try updating widget several times if no network connection detected
This commit is contained in:
parent
d61c4c815c
commit
1fc24f1e37
@ -4,6 +4,8 @@ import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
@ -29,8 +31,6 @@ public class WidgetUpdateService extends Service {
|
||||
public static final int UPDATE_RESULT_ERROR_NEED_CONF = 3;
|
||||
public static final int UPDATE_IN_PROGRESS = 4;
|
||||
|
||||
private int m_updateFailures = 0;
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
Log.d(TAG, "onBind");
|
||||
@ -38,21 +38,49 @@ public class WidgetUpdateService extends Service {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected boolean isNetworkAvailable() {
|
||||
ConnectivityManager cm = (ConnectivityManager)
|
||||
getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
|
||||
|
||||
// if no network is available networkInfo will be null
|
||||
// otherwise check if we are connected
|
||||
if (networkInfo != null && networkInfo.isConnected()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(Intent intent, int startId) {
|
||||
Log.d(TAG, "onStart");
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
||||
if (pm.isDeviceIdleMode()) {
|
||||
Log.d(TAG, "device in idle mode, bailing out");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
sendResultIntent(-1, UPDATE_IN_PROGRESS);
|
||||
|
||||
if (!isNetworkAvailable()) {
|
||||
final int retryCount = intent.getIntExtra("retryCount", 0);
|
||||
|
||||
Log.d(TAG, "service update requested but network is not available, try: " + retryCount);
|
||||
|
||||
if (retryCount < 10) {
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Intent serviceIntent = new Intent(getApplicationContext(), WidgetUpdateService.class);
|
||||
serviceIntent.putExtra("retryCount", retryCount + 1);
|
||||
startService(serviceIntent);
|
||||
|
||||
}
|
||||
}, 3 * 1000);
|
||||
} else {
|
||||
sendResultIntent(-1, UPDATE_RESULT_ERROR_OTHER);
|
||||
}
|
||||
|
||||
stopSelf();
|
||||
return;
|
||||
}
|
||||
|
||||
m_prefs = PreferenceManager
|
||||
.getDefaultSharedPreferences(getApplicationContext());
|
||||
|
||||
@ -77,7 +105,6 @@ public class WidgetUpdateService extends Service {
|
||||
JsonObject content = result.getAsJsonObject();
|
||||
|
||||
if (content != null) {
|
||||
m_updateFailures = 0;
|
||||
|
||||
int unread = content.get("unread").getAsInt();
|
||||
sendResultIntent(unread, UPDATE_RESULT_OK);
|
||||
@ -91,7 +118,6 @@ public class WidgetUpdateService extends Service {
|
||||
Log.d(TAG, "request failed: " + getErrorMessage());
|
||||
}
|
||||
|
||||
++m_updateFailures;
|
||||
sendResultIntent(-1, UPDATE_RESULT_ERROR_OTHER);
|
||||
}
|
||||
};
|
||||
@ -113,7 +139,6 @@ public class WidgetUpdateService extends Service {
|
||||
protected void onLoginFailed(int requestId, ApiRequest ar) {
|
||||
Log.d(TAG, "login failed: " + getString(ar.getErrorMessage()));
|
||||
|
||||
++m_updateFailures;
|
||||
sendResultIntent(-1, UPDATE_RESULT_ERROR_LOGIN);
|
||||
}
|
||||
|
||||
@ -124,21 +149,15 @@ public class WidgetUpdateService extends Service {
|
||||
}
|
||||
};
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String login = m_prefs.getString("login", "").trim();
|
||||
String password = m_prefs.getString("password", "").trim();
|
||||
String login = m_prefs.getString("login", "").trim();
|
||||
String password = m_prefs.getString("password", "").trim();
|
||||
|
||||
loginManager.logIn(getApplicationContext(), 1, login, password);
|
||||
}
|
||||
}, 2 * 1000);
|
||||
loginManager.logIn(getApplicationContext(), 1, login, password);
|
||||
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
||||
++m_updateFailures;
|
||||
sendResultIntent(-1, UPDATE_RESULT_ERROR_OTHER);
|
||||
}
|
||||
|
||||
@ -152,7 +171,6 @@ public class WidgetUpdateService extends Service {
|
||||
intent.setAction(SmallWidgetProvider.ACTION_UPDATE_RESULT);
|
||||
intent.putExtra("resultCode", resultCode);
|
||||
intent.putExtra("unread", unread);
|
||||
intent.putExtra("failures", m_updateFailures);
|
||||
|
||||
sendBroadcast(intent);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user