首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android Kivy应用程序上保存当前URL

在Android Kivy应用程序上保存当前URL
EN

Stack Overflow用户
提问于 2014-11-11 22:26:04
回答 1查看 607关注 0票数 4

我的代码:

代码语言:javascript
复制
import kivy                                                                                     
from kivy.app import App                                                                        
from kivy.lang import Builder                                                                   
from kivy.utils import platform                                                                 
from kivy.uix.widget import Widget                                                              
from kivy.clock import Clock                                                                    
from jnius import autoclass                                                                     
from android.runnable import run_on_ui_thread                                                   

WebView = autoclass('android.webkit.WebView')                                                   
WebViewClient = autoclass('android.webkit.WebViewClient')                                       
activity = autoclass('org.renpy.android.PythonActivity').mActivity
WebView = autoclass('android.webkit.WebView')                                                  
WebViewClient = autoclass('android.webkit.WebViewClient')                                      
activity = autoclass('org.renpy.android.PythonActivity').mActivity                              

class Wv(Widget):                                                                              
    def __init__(self, **kwargs):                                                            
        super(Wv, self).__init__(**kwargs)                                                      
        Clock.schedule_once(self.create_webview, 0)                                            

    @run_on_ui_thread                                                                          
    def create_webview(self, *args):                                                            
        webview = WebView(activity)                                                            
        webview.getSettings().setJavaScriptEnabled(True)                                        
        wvc = WebViewClient();                                                                  
        webview.setWebViewClient(wvc);                                                          
        activity.setContentView(webview)                                                        
        webview.loadUrl('www.google.com')

class ServiceApp(App):                                                                          
    def build(self):                                                                        
        return Wv()
    def on_pause(self):
        return True
    def on_resume(self):
        return Wv()

if __name__ == '__main__':                                                                      
    ServiceApp().run()

应用程序运行得很好,但我想在on_pause事件触发时保存当前的URL,然后在on_resume事件发生时返回到该URL。

我不知道该怎么做。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-01-12 20:28:11

编辑:我很好奇,然后继续检查。实际上,我得到了一个java.lang.RuntimeException:可能检测到死锁,这是因为在UI线程被阻塞时在错误的线程上调用了WebView应用程序接口。有必要对WebViewClient进行子类化,但我不确定如何在jnius中做到这一点。

我想你可以毫无问题地访问你的url。窗口小部件树如下所示: ServiceApp -> Wv,但您没有使webview成为Wv的成员。您可能应该这样做:

代码语言:javascript
复制
@run_on_ui_thread
def create_webview(self, *args):
    self.webview = WebView(activity)
    self.webview.getSettings().setJavaScriptEnabled(True)
    wvc = WebViewClient();
    self.webview.setWebViewClient(wvc);
    activity.setContentView(self.webview)
    self.webview.loadUrl('www.google.com')

在此之后,我认为您可以这样做:

代码语言:javascript
复制
class ServiceApp(App):
    def build(self):
        self.wv = Wv()
        return wv
    def on_pause(self):
        # do something with url, I don't know the android API that well
        # from http://developer.android.com/reference/android/webkit/WebView.html
        self.wv.webview.getUrl()
        return True
    def on_resume(self):
        # Here I have doubts why you create another widget but ok
        self.wv = Wv()
        return wv

有许多我不确定的部分,需要测试以确保这样继续下去是安全的,但这是一个开始。我的两分钱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26867124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档