2015-10-04 82 views
0

我正在用瓶和sl4a原型开发一个android应用程序。 有些代码遇到了一些麻烦。我正在使用multiprocessing设置一个5秒的延迟功能,打开一个webview到本地主机,所以当我运行服务器时,有时间在webview请求站点之前设置。出于某种原因,它不打开webview。 (脚本没有退出,并且没有发现任何错误工作的错误)我可以在一个脚本中运行服务器并运行一个可以打开webview的替代脚本,它工作得很好。 任何人都可以在我的代码中看到一个问题,因为我不想单独的脚本,因为我打算将这一切全部用sl4a和pythonforandroid封装在一个apk中。SL4A - 提供webview到瓶

为了简单起见,我剥去了大部分代码。

from bottle import route, run, template, static_file, redirect, request 
from multiprocessing import Process 
import android 


def showurl(): 
    time.sleep(5) 
    droid.webViewShow("http:\/\/localhost:8080") 


if __name__ == '__main__': 
    droid = android.Android() 
    port = int(os.environ.get('PORT', 8080)) 
    p = Process(target=showurl) 
    p.start 
    run(host='localhost', port=port, debug=True) 

在此先感谢!

回答

0

想通了。为了解释,让代码稍微冗长些。

from bottle import route, run, template, static_file, redirect, request 
from multiprocessing import Process 

def startserver(): 
    port = int(os.environ.get('PORT', 8080)) 
    run(host='localhost', port=port, debug=True) 

def showurl(): 
    droid.webViewShow("http:\/\/localhost:8080") 

@route('/') 
def index(): 
    return static_file('index.html', root='') 


if __name__ == '__main__': 
    droid = android.Android() 
    server = Process(target=startserver) 
    webview = Process(target=showurl) 
    server.start() 
    time.sleep(1) 
    webview.start() 

我没有问题,得到这个工作,一旦我把服务器和web视图通过Process()方法有(1)秒的延迟多道开始web视图,以便有时间服务器设置。

全功能的native/html应用程序都在python中。 FTW!