2016-11-15 64 views
1

我试图实现完全倾斜(https://github.com/adtile/Full-Tilt)罗盘例子(https://richtr.github.io/Marine-Compass)后保留最后指南针位置。当您重新启动应用程序,关闭它(通过刷卡,或者多任务,...)罗盘北位置不被复位和最后的位置保持后的Android的WebView的WebView中应用程序重新启动,而不是重新

我的问题是。

如何重现:

  1. 开始应用:例如北在顶部(海洋罗盘不 点向北链接这只是一个例子。)
  2. 旋转手机来点在其他位置,例如南。
  3. 关闭应用(通过多任务,轻扫或任务管理器,...)
  4. 再次旋转您的手机上的其他位置点,例如西
  5. 重新启动应用程序:指南针指向最后一个位置,南方为这个 的例子。而不是重新设置并指向真实的位置。西在 我们的例子。

我尝试了很多在论坛上找到解决方案,但没有任何工程。像

  • ClearView的()
  • clearHistory()
  • 破坏()
  • clearCache()
  • clearFormData()
  • 清除Cookies
  • setCacheMode(WebSettings.LOAD_NO_CACHE)
  • setDomStorageEnabled(false)
  • setAppCacheEnabled(假)
  • 使用loadURL( “关于:空白”)

有任何人的想法来解决这个问题?

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

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" 
/> 

+0

需要清除的数据编程在这里看到:http://stackoverflow.com/questions/6134103/clear-应用程序,数据编程方式 –

+0

谢谢,但在哪里调用clearApplicationData方法?如果用户关闭多任务应用程序,则无法捕获事件。应用程序刚刚停止没有任何事件 –

回答

0

调用它的onStop)方法,并把你的onCreate代码的onResume()方法

+0

嗨Najeeb,我尝试调用方法来清除onStop()方法中的数据(我使用此方法从此链接https://www.hrupin.com/2011/11/how-to-clear-user-data-in -your-android-application-programmatically),并将创建代码放在onResume()中,但不起作用。没有变化。 –

相关问题