1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-10-10 23:28:25 +02:00

Only start the webview when needed

This commit is contained in:
cpfeiffer 2017-02-25 22:02:40 +01:00
parent 0038ddabdb
commit 53dbc54041
6 changed files with 40 additions and 8 deletions

View File

@ -37,6 +37,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceService; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceService;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser; import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils; import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs; import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
@ -136,9 +137,11 @@ public class GBApplication extends Application {
} }
private void createWebViewActivity() { private void createWebViewActivity() {
Intent intent = new Intent(getContext(), BackgroundWebViewActivity.class); if (DeviceHelper.getInstance().needsBackgroundWebView(this)) {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Intent intent = new Intent(getContext(), BackgroundWebViewActivity.class);
startActivity(intent); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
} }
@Override @Override

View File

@ -3,14 +3,9 @@ package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton; import nodomain.freeyourgadget.gadgetbridge.util.WebViewSingleton;
public class BackgroundWebViewActivity extends Activity { public class BackgroundWebViewActivity extends Activity {
private static Logger LOG = LoggerFactory.getLogger(BackgroundWebViewActivity.class);
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

View File

@ -103,4 +103,9 @@ public abstract class AbstractDeviceCoordinator implements DeviceCoordinator {
} }
return false; return false;
} }
@Override
public boolean needsBackgroundWebView(GBDevice device) {
return false;
}
} }

View File

@ -186,4 +186,12 @@ public interface DeviceCoordinator {
* @return * @return
*/ */
Class<? extends Activity> getAppsManagementActivity(); Class<? extends Activity> getAppsManagementActivity();
/**
* Returns true if the given device needs a background webview for
* executing javascript or configuration, for example.
*
* @param device
*/
boolean needsBackgroundWebView(GBDevice device);
} }

View File

@ -137,4 +137,9 @@ public class PebbleCoordinator extends AbstractDeviceCoordinator {
public Class<? extends Activity> getAppsManagementActivity() { public Class<? extends Activity> getAppsManagementActivity() {
return AppManagerActivity.class; return AppManagerActivity.class;
} }
@Override
public boolean needsBackgroundWebView(GBDevice device) {
return true;
}
} }

View File

@ -255,4 +255,20 @@ public class DeviceHelper {
} }
return false; return false;
} }
/**
* Returns true if the background webview for executing javascript is needed
* for any of the known/available devices.
* @param context
*/
public boolean needsBackgroundWebView(Context context) {
Set<GBDevice> availableDevices = getAvailableDevices(context);
for (GBDevice device : availableDevices) {
DeviceCoordinator coordinator = getCoordinator(device);
if (coordinator.needsBackgroundWebView(device)) {
return true;
}
}
return false;
}
} }