2015-10-04 58 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!