有關splash 的問題 |
缺席
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
xe10發表以來, 我以自己xe8的程式進行測試, 發現目前最大的問題是
XE7 由 splash 畫面出現 -> 黑畫面 -> 啟動 程式, 這過程 7秒鐘 XE8 由 splash 畫面出現 -> 黑畫面 -> 啟動 程式, 這過程 3秒鐘 XE10由 splash 畫面出現 -> 黑畫面 -> 啟動 程式, 這過程 遠過10秒鐘 這段黑畫面等待時間已超出常人可忍受的程度, 我們已釋出了XE8的APP, 如果一旦用XE10發佈的, 可能死一票, 每個客戶都會認為APP當機, 這幾天我秀給好多人都不能接受, 我也查了網路好多人在討論, 官網文章則建議我們不要在APP CREATE 完成前做太多事, 最好很多CODE是讓APP 完成CREATE 後再執行, 然而我也特別改了一下去測試(把ON CREATE 的內容全部數移走), 但只節了1秒鐘, 換句話說, XE10 的啟動還是非常的慢, 不知到底XE10動了什麼造成如此巨大的影響 或者有其他方法不要有黑畫面(但我查網的結果是悲觀的, 因為大家都說這是ANDROID 系統的限制, splash在app 一旦進入主程序就會自動close, 而app未完成create前又沒有辦法做什麼事) 不知各位使用上有沒有什麼可建議的呢? |
Main Chen
高階會員 發表:29 回覆:135 積分:127 註冊:2002-10-07 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
感謝 main chen 的指導, 不過因為提供的方法我未曾學習過, 不是清楚標準的用法如何, 還是採用土法練鋼的做法, 既然embt說盡量避免在 on create 執行太多動作, 所以我把 on create事件內的所有code先移除, 然後一筆筆重新加回來測試, 找到了問題點, 也解決了10杪的黑畫面問題, 但我比較好奇的不是於程式寫問題, 而是在原封不動的source code 在 xe8 下只有3秒的黑屏, 但在 xe10卻要耗超過4倍時間才能完成, 到底 10改了什麼系統才會有這個問題出現, 這是我很想了解的地方, 因為通常版本的更換, 我們都是把舊版的source直接轉上來使用無須二度, 三度修正, 這才能達到最快速的產能, 降低開發的成本, 像這次我又花了四天的時間耗在這裡找問題, 成本高的嚇人啊~~~~
===================引 用 Main Chen 文 章=================== 可以用 Log.D(...) 去查查到底那一段程式碼拖慢的. 再用 Android Debug Monitor 去看記錄 參考: http://www.gesource.jp/weblog/?p=6619 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
看了你的问题的解决过程,我想到一个对应这样的问题的普遍思路:把 Delphi 在Project里面自动生成的一堆 Form 的 Application.CreateForm(Form2, TForm2) 这样的句子,全部删除掉,只留下第一个 Form。其它的 Form 都只在需要的时候才 Create。另外,这第一个 Form 也不是你的程式的真正的 Main Form,而仅仅是一个 Flash 的 Form,它显示进度条。然后,才开始由它来 Create 一系列你需要的东西,并在创建过程中,用进度条显示进度。其它的 Form 则是需要的时候才 Create。以前在 Windows 底下,经常这样干。
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
理論上是這樣沒錯, 而我基本上也都是這麼幹的, 這支程式由 XE4延續到XE10, 跨越6個版本, 直到XE7出現splash的功能(xe7), 都未曾改寫過 on create 的內容, 但誠如我上所言, 我實在不知道XE8及XE10在處理Multi-Deivce Form 時的內幕, 何以一個簡單的Frame create會有這麼大的效能差異, 這才是我真正想了解的事情
===================引 用 pcplayer99 文 章=================== 看了你的问题的解决过程,我想到一个对应这样的问题的普遍思路:把 Delphi 在Project里面自动生成的一堆 Form 的 Application.CreateForm(Form2, TForm2) 这样的句子,全部删除掉,只留下第一个 Form。其它的 Form 都只在需要的时候才 Create。另外,这第一个 Form 也不是你的程式的真正的 Main Form,而仅仅是一个 Flash 的 Form,它显示进度条。然后,才开始由它来 Create 一系列你需要的东西,并在创建过程中,用进度条显示进度。其它的 Form 则是需要的时候才 Create。以前在 Windows 底下,经常这样干。 |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
不清楚它里面做了什么导致运行效率下降厉害。
只不过从一些比较常见的地方,就能知道 Delphi 的很多代码,是一些比较没经验的初学者写的。比如: 1. TLang 里面,默认的 Language 居然没有。也就是没有提供一个 public 的 Method,让它可以回到默认的语言。比如它应该是:TLang.GoDefault 这样的 Method。然后深入去看它的 CODE,发现里面有一个私有的方法,就是当你把它的 Lang 设置为字符串 'en' 时,它就会变成默认的语言。这样写死为 'en' 的字符串的编码风格,很业余啊。 2. ObjectToJson 里面,第一它不是将一个 Object 的 property 变成 JSON string,而是直接转 private 里面的 Field。这个就不说了。比较变态的是,如果你的 Field 的命名,前缀不是 “F” 的话,比如:FHost,FMyName,如果没有这个 F 的话,变成 JSON String 没问题,但它就变不回去了。这种写法,也很业余啊。 So,它的代码质量越来越低,也是可以理解的了。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |