我的代码:
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时。
我没弄明白该怎么做。
建议?
答案 0 :(得分:0)
编辑:我很好奇,继续检查事情。实际上我得到了一个java.lang.RuntimeException:由于在UI线程被阻塞时在错误的线程上调用了WebView API,因此检测到可能的死锁。 将WebViewClient子类化是必要的,我不知道如何在jnius中执行此操作。
我认为您可以毫无问题地访问您的网址。小部件树看起来像这样: ServiceApp - > WV 但是你没有让webview成为Wv的成员。你应该这样做:
@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')
在此之后,我认为你可以做到:
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
我不确定有很多部分,需要进行测试以确保这样做是安全的,但这只是一个开始。我的2美分。