重新启动应用程序而不是重置后,Android WebView会保留最后一个罗盘位置

时间:2016-11-15 13:57:05

标签: android android-webview

我试图在WebView中实现Full-Tilt(https://github.com/adtile/Full-Tilt)罗盘示例(https://richtr.github.io/Marine-Compass)。

我的问题是当你重新启动应用程序时,关闭它(通过滑动或多任务,......)罗盘的北位置不会被重置并保留最后位置。

如何重现:

  1. 启动应用程序:例如,北方位于顶部(海洋指南针没有 在链接中指向北方。它只是一个例子)
  2. 将手机旋转到指向其他位置,例如南方。
  3. 关闭您的应用(通过多任务,滑动或任务管理器,...)
  4. 再次旋转手机以指向其他位置,例如West
  5. 重新启动app:罗盘指向最后一个位置,南方为此     例。而不是重置和指向实际位置。西在     我们的例子。
  6. 我在论坛上尝试了很多解决方案,但没有任何效果。喜欢

    • Clearview的()
    • clearHistory()
    • destroy()
    • clearCache()
    • clearFormData()
    • 清除cookies
    • setCacheMode(WebSettings.LOAD_NO_CACHE)
    • setDomStorageEnabled(假)
    • setAppCacheEnabled(假)
    • 使用loadURL("关于:空白&#34)

    有人有什么想法来解决这一点吗?

    查找下面的代码示例...

    MainActivity.java:

    public class MainActivity extends AppCompatActivity {
    
    //fields
    private final String mViewUrl = "https://richtr.github.io/Marine-Compass";
    
    private WebView mWebView;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        mWebView = ((WebView) findViewById(R.id.testView));
        mWebView.loadUrl("about:blank");
        String userAgent = "Mozilla/5.0 (Linux; Android 6.0; Android SDK built for x86 Build/MASTER; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.119 Mobile Safari/537.36";
        mWebView.getSettings().setUserAgentString(userAgent);
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        mWebView.getSettings().setAppCacheEnabled(false);
        mWebView.getSettings().setDomStorageEnabled(false);
        mWebView.clearFormData();
        mWebView.clearHistory();
        mWebView.clearCache(true);
        this.clearCookies(this);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.loadUrl(mViewUrl);
    
    }
    
    @SuppressWarnings("deprecation")
    public static void clearCookies(Context context)
    {
    
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
            CookieManager.getInstance().removeAllCookies(null);
            CookieManager.getInstance().flush();
        } else
        {
            CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(context);
            cookieSyncMngr.startSync();
            CookieManager cookieManager=CookieManager.getInstance();
            cookieManager.removeAllCookie();
            cookieManager.removeSessionCookie();
            cookieSyncMngr.stopSync();
            cookieSyncMngr.sync();
        }
    }
    }
    

    AndroidManifest.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kedros.test">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

    activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.kedros.test.MainActivity">
    
    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/testView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    />
    

1 个答案:

答案 0 :(得分:0)

在onStop()方法中调用它并将onCreate代码放在onResume()方法中