Android CookieSyncManager::createInstance()需要在CookieSyncManager::getInstance()之前调用
此错误消息非常清楚: CookieSyncManager::createInstance() 需要提前打电话 CookieSyncManager::getInstance() 但我之所以会出现这个错误,是因为我遵循了: 要使用CookieSyncManager,主机 应用程序必须调用以下命令 应用程序启动时:Android CookieSyncManager::createInstance()需要在CookieSyncManager::getInstance()之前调用,android,cookies,webview,android-webview,Android,Cookies,Webview,Android Webview,此错误消息非常清楚: CookieSyncManager::createInstance() 需要提前打电话 CookieSyncManager::getInstance() 但我之所以会出现这个错误,是因为我遵循了: 要使用CookieSyncManager,主机 应用程序必须调用以下命令 应用程序启动时: CookieSyncManager.createInstance(context) 要设置同步,主机 应用程序必须调用 CookieSyncManager.getInstance().s
CookieSyncManager.createInstance(context)
要设置同步,主机
应用程序必须调用
CookieSyncManager.getInstance().startSync()
在Activity.onResume()中
只有当应用程序尝试恢复时,而不是在干净地启动时,才会发生错误
因此,我可能可以通过将CookieSyncManager.createInstance(context)
移动到Activity.onResume()
来解决这个问题,但是。。。这不会产生新的问题吗
(例如,每次应用程序恢复时都会忘记上一个会话cookies?我在最近的一个应用程序中查看了官方文档,CookieSyncMasnager工作正常 我有以下资料:
onCreate()
CookieSyncManager.createInstance(this);
onResume()
CookieSyncManager.getInstance().startSync();
onPause()
CookieSyncManager.getInstance().stopSync();
我正在createInstance()中使用活动上下文。你没有提到你在使用哪种上下文
您也没有提到在onPause()中执行CookieSyncManager.getInstance().stopSync()(或类似操作)。因此,对于简历,您可能会在没有中间停止的情况下调用CookieSyncManager.getInstance().startSync()两次?@Torid抱歉,我没有提到我正在调用
CookieSyncManager.getInstance().stopSync()
中的onPause()
。据我目前所知,我使用的上下文是主活动的:它在initWebView()中调用,initWebView()是从活动的onInit()调用的,调用方式如下:rununuithread(new Runnable(){public void run(){initWebView();}})代码>这有什么问题吗?谢谢你和+1。嗯。。。runOnUiThread是一种活动方法,但我不认识onInit。这是什么类的一部分?另外,您不会说上下文是如何通过方法链传递到initWebView的——最好检查“this”是否从活动中正确传递。并且,您始终可以使用CookieSyncManager.createInstance(getApplicationContext())在initWebView调用中显式获取应用程序上下文(而不是活动上下文)@Torid I最终发现问题的根本原因不是上下文,而是调用这些回调的顺序onInit()
是的回调,当它在onCreate()
中被触发时,它实际上是在onResume()之后被系统调用的。因此,这是一个错误。现在的问题是:将CookieSyncManager.createInstance(context)
移动到Activity.onResume()
是正确的解决方案吗?太好了。有趣的是,您可以在WebView之前创建CookieSyncManager实例?但是嘿。。。如果有效的话。