加快activity顯示速度,提高使用者體驗

2021-07-10 14:41:11 字數 1181 閱讀 1862

來自:

專案裡某個activity在顯示前總是會先黑屏一會兒,然後才顯示頁面,感覺影響使用者體驗,要求優化。好吧,從activity的生命週期方法開始吧。因為業務邏輯的關係,只用到oncreate和onresume(事實上,個人感覺,除了這倆生命週期方法以及相對應的兩個方法,其他的生命週期方法例如onstart之類似乎都只在面試時候用到。。)。

文件裡說明,onresume一旦執行完畢,頁面就已經顯示給使用者了

,oncreate則是初始化各種(只要初始化一次的)資料,比如布局(這個必須在oncreate裡),一些邏輯需要的變數,物件等等。oncreate還沒有顯示給使用者,

那麼那段黑屏可以確定就是oncreate的時間太長了。

怎麼優化?既然要減少oncreate的時間,那就精簡oncreate裡的**。放在onresume裡好了。為了使用者體驗更好一些,把頁面顯示的view細分一下,放在asynctask裡逐步顯示,如果你夠熟練,用handler更好,這樣使用者的看到的就是有層次有步驟的乙個個的view的展示,不會是先看到乙個黑屏,然後一下顯示所有view。最好作成動畫,效果更自然些。利用多執行緒的目的就是盡可能的減少oncreate和onreume的時間,使得使用者能盡快看到頁面,操作頁面。

但是,很多操作是只需要一次初始化的,都放在onresume裡每次進入activity都會浪費初始化時間。這個好解決,做乙個boolean變數,在oncreate裡標記為true。在onresume裡判斷為true就進行初始化,初始化完成立刻置為false。搞定。

**如下:

package com.example.example;  

import android.os.asynctask;

import android.os.bundle;

import android.view.menu;

public class mainactivity extends activity

@override

protected void onresume()

@override

protected void onprogressupdate(progress... values)

}.execute(params);

create = false;

} }

}

加快alter table 操作速度

理論上,mysql可以跳過建立新錶的 步驟.列的預設值實際上存在表的.frm檔案中,所以可以直接修改這個檔案而不需要改動表本身。然而mysql還沒有採用這種優化的方法,所有的modify column操作都將導致表重建.這就是為什麼上圖直接使用modify column 有那麼多行受影響和需要那麼久...

oracle加快查詢速度

平時用查詢sql查詢時都是簡單的select,如果關聯關係多了的話就加入left join right join inner join 左 右 內等加快表直接的查詢和查詢邏輯。但是沒加乙個左 右 內連線,就會消耗一些資料庫的資源,當你聯查的表越多時你就會發現你的資料庫會查詢乙個多小時都沒有結果。這時...

JRuby Sandbox加快啟動速度

一直很羨慕有些公司的研發流程自動化管理,可以極大的節省時間,而我們公司很多操作要手動去做,為此,我使用ruby語言寫了不少指令碼半自動化這些操作。原來我一直使用jruby來執行指令碼,一直受困於它緩慢的啟動速度。於是我在前些時候利用mri中win32 clipboard替換了swing中剪下板操作,...