2017-07-18 76 views

回答

0

嘗試這index.js重新啓動應用程序

Intent i = getBaseContext().getPackageManager() 
      .getLaunchIntentForPackage(getBaseContext().getPackageName()); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
+0

我也發現這段代碼,但我的應用程序是在Appcelerator Titanium中開發的。我知道我可以使用hyperloop編寫一些Java代碼,但我認爲有一個JavaScript解決方案。 謝謝! :) –

+1

@CristiCalacianu https://stackoverflow.com/questions/40452206/android-app-hangs-on-restart-appcelerator-titanium –

+0

我把它放在我的tiapp.xml中,它有助於避免應用程序變得無法響應重新開放。我的問題是我如何重新啓動應用程序做這樣的事情:button.addEventlistener('click',function(){ //重新啓動應用程序點擊事件 }); –

0

通過重新啓動你的意思是像重裝alloy.js,然後,同樣的,當它發生,因爲如果應用程序被關閉並重新啓動新的?如果alloy.js不能再次執行,您可以嘗試跟蹤數組中所有打開的窗口,然後點擊按鈕,關閉所有窗口並重新啓動index.js或控制器,無論哪個是您的入口點到應用程序。

示例代碼來存儲窗口引用

windowStack.push({ 
    windowObj : windowObject, //Ti.UI.createWindow 
    winName : windowName,  //Provide a human readable name for logs 
    winId : windowId   //Unique id for every window you open to identify 
}); 

使用這個你必須將所有窗口引用的所有時間。當你想關閉一個窗口時,只需按照LIFO過程並關閉所有窗口即可。

注:如果您關閉任何窗口,如果它有exitOnClose設置爲true,則整個應用程序將關閉並重新啓動不。因此,對於這種情況,您可以創建一個空窗口作爲要插入到堆棧中的第一個窗口。重新啓動時,關閉除exitOnClose爲true這個特殊窗口以外的所有窗口,其他所有窗口都爲false。所以,當你想關閉整個應用程序時,關閉所有窗口。開始時,只需關閉除特殊窗口之外的所有設備。

還有你的任何應用程序初始化代碼,你可以將它移動到一個實用JS,它將被你啓動的第一個功能窗口調用。

如果您仍然需要任何進一步的輸入,我可以根據您的需要發佈更多的示例代碼。

+0

是的,類似的東西。但該應用程序不是用Alloy編寫的。我想重新啓動應用:) –

+0

然後,我提到的上述方法應按照您的要求工作。從app.js啓動後,創建一個全局數組並存儲您打開的每個窗口引用。這個數組將作爲一個窗口堆棧,並在數組的最後一個窗口中顯示。現在你可以使用這個數組作爲LIFO。我已經包含上面的示例代碼。 – Soumya

相關問題