A. 怎麼優化app store
「柚鷗ASO」在ASO這塊就做的蠻不錯的,一直專注於應用商店優化,因為專注所以專業;專注應用商店下載量優化、評分優化、關鍵詞排名優化、關鍵詞覆蓋、產品權重提升等等整體方案優化服務
柚鷗網路-全球ASO優化服務商專注ASO優化已11年!(效果說話不到效果不收費)
【基礎優化】協助客戶針對app情況在各大應用商店進行標題,副標題,關鍵詞,描述等優化。
【進階優化】給app進行下載增量,提升關鍵詞的覆蓋數,進行評分優化,增加產品的品牌形象。
【高階優化】針對核心有效的關鍵詞進行排名優化提升,從而獲取最精準的用戶。
B. 常見APP推廣方式有哪些
1、植入廣告模式。
在眾多的功能性應用和游戲應用中,植入廣告是最基本的模式,廣告主通過植入動態廣告欄形式進行廣告植入,當用戶點擊廣告欄的時候就會進入網站鏈接,可以了解廣告主詳情或者是參與活動,這種模式操作簡單,只要將廣告投放到那些下載量比較大的應用上就能達到良好的傳播效果。
2、注冊返利模式。
這種推廣模式是,廣告發布商把符合自己定位的應用發布到應用商店內,用戶通過手機應用平台下載應用,然後完成注冊,廣告發布商將支付一定報酬用來鼓勵用戶的這種行為。這種營銷模式具有很強的實驗價值,讓用戶了解產品,增強產品信心,提升品牌美譽度。
3、銷售返利模式。
該模式基本上是基於互聯網上購物網站,將購物網站移植到手機上面,用戶可以隨時隨地的瀏覽網站獲取商品信息,進行下單,這種模式相對於手機購物網站的優勢是快速便捷,內容豐富,而且這種應用一般具有很多優惠措施。
4、aso優化方式。
就是對於app本身的優化,比如副標題、描述、截圖、視頻預覽、這些設置就是讓演算法能命中重要的關鍵詞,截圖和視頻預覽就是打開app詳情頁後的展示,就是讓人在沒有下載app情況下,提前體驗下app的美觀。
5、社交平台。
是推廣app一個拓展渠道,因為現在很多人都使用社交平台進行交流,不管是什麼人群都在使用社交平台,比較讓人關注的社交平台是qq和微信,其他社交平台只是作為微信和qq缺點的補充。
C. android 開發之app都可以進行哪些優化
1.在後台取消一些線程中的動作
我們知道App運行過程中所有的操作都默認在主線程(UI線程)中進行的,這樣App的響應速度就會受到影響。會導致程序陷入卡頓、死掉甚至會發生系統錯誤。
為 了加快響應速度,需要把費時的操作(比如網路請求、資料庫操作或者復雜的計算)從主線程移動到一個單獨的線程中。最高效的方式就是在類這一級完成 這項操作,可以使用AsyncTask或者IntentService來創建後台操作。如果選擇使用IntentService,它會在需要的時候啟動起 來,然後通過一個工作線程來處理請求(Intent)。
使用IntentService時需要注意以下幾點限制:
這個類不要給UI傳遞信息,如果要向用戶展示處理結果信息請用Activity;
每次只能處理一個請求;
每一個處理請求過程都不能中斷;
2.保持響應不發生ANR
從UI線程中移除費時操作這個方式還可以防止用戶操作出現系統不響應(ANR)對話框。需要做的就是繼承AsyncTask來創建一個後台工作線程,並實現doInBackground()方法。
還有一種方式就是自己創建一個Thread類或者HandlerThread類。需要注意這樣也會使App變慢,因為默認的線程優先順序和主線程的優先順序是一樣的,除非你明確設定線程的優先順序。
3.在線程中初始化查詢操作
當查詢操作正在後台處理時,展示數據也不是即時的,但是你可以使用CursorLoader對象來加快速度,這個操作可以使Activity和用戶之間的互動不受影響。
使用這個對象後,你的App會為ContentProvider初始化一個獨立的後台線程進行查詢,當查詢結束後就會給調用查詢的Activity返回結果。
4.其它需要注意的方面
使用StrictMode來檢查UI線程中可能潛在的費時操作;
使用一些特殊的工具如Safe.ijiami、Systrace或者Traceview來尋找在你的應用中的瓶頸;
用進度條向用戶展示操作進度;
如果初始化操作很費時,請展示一個歡迎界面。
優化設備的電池壽命
如果應用很費電,請不要責怪用戶卸載了你的應用。對於電池使用來說,主要費電情況如下:
更新數據時經常喚醒程序;
用EDGE或者3G來傳遞數據;
文本數據轉換,進行非JIT正則表達式操作。
5.優化網路
如果沒有網路連接,請讓你的應用跳過網路操作;只在有網路連接並且無漫遊的情況下更新數據;
選擇兼容的數據格式,把含有文本數據和二進制數據的請求全部轉化成二進制數據格式請求;
使用高效的轉換工具,多考慮使用流式轉換工具,少用樹形的轉換工具;
為了更快的用戶體驗,請減少重復訪問伺服器的操作;
如果可以的話,請使用framework的GZIP庫來壓縮文本數據以高效使用CPU資源。
6.優化應用在前端的工作
如果考慮使用wakelocks,盡量設置為最小的級別;
為了防止潛在的bug導致的電量消耗,請明確指定超時時間;
啟用 android:keepScreenOn屬性;
除了系統的GC操作,多考慮手動回收Java對象,比如XmlPullParserFactory和BitmapFactory。還有正則表達式的Matcher.reset(newString)操作、StringBuilder.setLength(0)操作;
要注意同步的問題,盡管在主線程中是安全的;
在Listview中要多採用重復利用策略;
如果允許的話多使用粗略的網路定位而不用GPS,對比一下GPS需要1mAh(25s * 140 mA),而一般網路只用0.1mAh(2s * 180mA);
確保注銷GPS的位置更新操作,因為這個更新操作在onPause()中也是會繼續的。當所有的應用都注銷了這個操作,用戶可以在系統設置中重新啟用GPS而不浪費電量;
請考慮在大量數理運算中使用低精度變數並在用DisplayMetrics進行DPI任務時緩存變數值;
7.優化工作在前台的應用
請確保service生命周期都是短暫的,因為每個進程都需要2MB的內存,而在前台程序需要內存時也會重新啟動;
保持內存的使用量不要太大;
如果要應用每30分鍾更新一次,請在設備處於喚醒狀態下進行;
Service在pull或者sleep狀態都是不好的,這就是為什麼在服務結束時要使用AlarmManager或者配置屬性stopSelf()的原因。
8.其它注意事項
在進行整體更新之前檢查電池的狀態和網路狀態,等待最好的狀態在進行大幅度裝換操作;
讓用戶看到用電情況,比如更新周期,後台操作的時候;
實現低內存佔用UI
9.找到布局顯示問題
當 我們為布局單獨創建UI的時候,就是在創建濫用內存的App,它在UI中會出現可惡的延時。要實現一個流暢的、低內存佔用的UI,第一步就是搜索 你的應用找出潛在的瓶頸布局。使用Safe.ijiami和Android SDK/tools/中自帶的Hierarchy Viewer Tool工具。
還有一個很好的工具就是Lint,它會掃描應用的源碼去尋找可能存在的bug,並為控制項結果進行優化。
10.解決問題
如果布局顯示結果發現了問題,你可以考慮簡化布局結構。可以把LinearLayout類型轉化成RelativeLayout類型,降低布局的層級結構
D. APP 優化 - 概述
不是我蛋疼,有的朋友可能真的大部分 APP 優化點都說不上來,當然也是 app 裡面可以優化的東西多造成的,我也不可能都知道,寫我自己的認識吧
這個可是大家都得會的了,每個 andorid 都需要的,app 啟動優化的思路就是減少 application 和 launch activity 的創建耗時。但是往往這里都是我們進行初始化的地方,所以我們的優化思路如下:
詳細請看我們文章:
APK 瘦身的思路不多,就是減少 png 適配文件,壓縮 png ,使用 webp,svg 代替 png ,app 能自己畫的盡量自己畫,比如 shape,layer-list,drawable,svg
然後是只適配 ARM 架構 CPU,動態下發 so,jar,aar文件,使用 lint 去除無用資源,打包時不打沒使用的文件進去
具體請看我的文章:
E. APP啟動性能優化
一、淺談APP啟動性能優化原因
1、引起性能問題的原因
隨著項目不斷的快速迭代,往往會造成App啟動卡慢現象,因為可能在App主進程啟動階段或者在主界面啟動階段放了很多初始化其他業務的邏輯,而這些業務落地可能一開始並不需要用到;
2、為什麼要做啟動速度優化
App啟動卡慢會影響一個App的卸載率和使用率;
啟動速度快會給人一種輕快的感覺,減少用戶等待時間;
如果一個App從點擊桌面圖標到看到主界面花了10秒,請問你能接受么?忍耐不好的估計直接就卸載了,或者沒等打開就直接Home鍵按出去,然後殺進程了;這樣一來App卸載率提升了,使用率下降了。所以對於有大量用戶的App來說,這些性能細節是很重要的;
APP啟動性能優化工具的選擇
作為APP的開發者,我使用的一直都是一款友盟+軟體,U-APM 是友盟+推出的App穩定性監控、性能監控和雲真機測試平台。通過輕量級的集成接入即可擁有實時、可靠、全面的應用崩潰、ANR、自定義異常等捕獲能力,及卡頓、啟動分析等性能能力,支持多場景、多通道智能告警監控,幫助開發者高效還原異常、卡頓用戶的訪問路徑和業務現場,縮短故障排查時間。
二、分析怎麼做啟動優化
1、啟動過程簡單分析
App從點擊桌面圖標到我們看到App的主界面整個過程中經過了哪些步驟,哪些地方是我們可以優化的地方;
2、從啟動過程找出優化點
App啟動過程中我們優化的地方包括主進程啟動流程和主界面啟動流程,主進程啟動就是Application的創建過程,主界面啟動就是MainActivity的創建過程;
只需要分別對這兩個部分進行優化即可:
Application中attachBaseContext最早被調用,隨後是onCreate方法,盡量在這兩個方法中不要有耗時操作;
三、啟動優化步驟
1、Application中加入非同步線程
是把不必要提前做的操作放到非同步線程中去做,也就是我們經常做的非同步載入;
2、主頁面加入非同步線程和延遲載入功能
與Application的優化思路一樣,也是封裝onSyncLoad和onAsyncLoad方法對現有代碼進行一個分類,但是這兩個方法的調用時機要晚一點,是在主界面首屏繪制完成的時候調用。這個步驟也需要new一個Thead,屬於額外的開銷,不過這不影響我們整體性能;
3、態載入布局:主布局文件優化
把主界面中不需要第一次就用到的布局全部使用動態載入的方式來處理,使用ViewStub或者直接在使用時動態addView的方式;
4、主布局文件深度優化
Activity在載入布局的時候,會對整個布局文件進行解析,測量(measure),布局(layout)和繪制(draw),所以設計簡單合理的布局尤為重要。幾個重要的優化如下:
減少布局層級
減少首次載入View的數量
減少過度繪制
5、頁面功能的分模塊化和懶載入
一個頁面上有很多功能模塊,最好每個功能模塊都單獨的分開,模塊之間用介面進行數據溝通;
按需載入所需要的功能,不要打開一個頁面都載入所有的功能;
載入完所需要的功能,如果是一次性載入不需要保持在內存中,盡快銷毀掉,形成良好的習慣。
APP啟動性能優化是一條持續之路,通過優化我們可以了解到影響啟動性能的因素有哪些,這樣我們平時在編碼的過程中就會多注意自己的代碼性能。開發者可利用友盟+U-APM對APP啟動進行監控,另外友盟+U-APM還提供雲真機測試能力,助力開發者從研發測試質量驗收到線上問題復現排查,保障應用品質,提升測試效率。在雲真機測試期間自動採集崩潰信息,提供詳盡的崩潰報告協助篩查,真正實現監控測試全流程深度打通。
F. 如何快速優化APP的關鍵詞
選好APP的關鍵詞是我們做ASO優化的基礎,關鍵詞選得好,對我們日後的優化工作來說有事半功倍的效果,而選好關鍵詞說難不難,說容易也不容易,下面就從新人的角度來說下如何選好我們的APP的關鍵詞。首先我們需要先找准產品定位,產品屬於什麼類型,然後確定關鍵詞的范圍。然後我們點進每個應用,找到他們應用下排名較高且搜索指數較高的關鍵詞,記到我們的文檔裡面。如果我們拿不準我們選出的關鍵詞和我們APP是否有關聯,可以通過「關鍵詞擴展助手」功能進行查詢。我們在搜索框內輸入「購物」,然後「ctrl+f」,全局搜索是否有我們選中的關鍵詞,這樣我們就可以留下一批搜索熱度高、相關性高的關鍵詞。
G. 移動app怎麼進行性能優化
App的出現給我們的生活帶來了很多便利的地方,拿著手機就可以解決很多生活問題,比如說購物、看新聞、查資料、學習等等,這些都是移動App給我們帶來的便捷,所以一款好用的App是非常重要的,它的性能問題影響了用戶體驗,對移動App進行適當的優化也是非常有必要的。你可以了解下聽雲APP,它是新一代的移動應用性能管理解決方案,部署在App應用生產環境,可以迅速發現定位App的崩潰、黑屏、卡頓等用戶體驗問題。採集真實用戶移動設備上的應用性能,幫助企業了解真實的用戶體驗,通過植入探針主動探測移動應用性能,幫助企業及時發現應用性能隱患,及時進行優化、調整,從而提升App質量,改善用戶體驗。
H. 移動 app 從哪些 方面優化
定了四個方向:
- 響應時間(Response Time)
- 界面卡頓(ANR)
- 耗內存(Memory)
- 內存泄露(Out of memory)
響應時間
這里指的是客戶端與服務端交互,拿到數據、解析、再到顯示到界面整個過程耗費的時間。
這個部分涉及客戶端的優化,也涉及服務端的優化,這里只討論客戶端。
HTTP請求方式
我們的app一般離不開網路,請求介面是最平常的操作了,如何請求,請求什麼我們在開發初期就要定好,服務端給我的提供的介面,大致可以通過GET、POST、HEAD、PUT、DELETE這幾種請求方式,不同的請求方式有不同應用場景,比如GET請求,應當用來請求返回結果,參數是作為url的一部分;POST請求,用於請求會更改服務端數據或狀態;HEAD請求跟GET一樣,只是伺服器不能在響應里返回消息主體;PUT請求,用於將網頁放置正確的地方;DELETE請求用於刪除伺服器指定文檔。
使用優秀的開源Http框架是我們比較好的選擇,它的優點是經過市場的驗證,很多坑都被填過,缺點也是我們需要去深究它才能對其進行擴展,遇到坑也不一定能填。
如果自己造輪子的話,還需要我們花時間去驗證去適應我們的業務需求,但好處是我們可以自己去擴展可把控,不過這很考量開發者的素質。
數據解析
實際開發當中服務端的返回數據格式無非就兩種:
- JSON
- XML
這兩種格式數據格式各有優劣,從可讀性來看,xml略微好一點,不過JSON也有規范的標簽,從解析難度和速度來看,大家都比較傾向使用JSON,目前JSON也是主流的數據格式。
在Android中均可以使用優秀的解析庫來加快我們的解析速度,XML中有dom4j,JSON有Jackson、Gson,我們通過這些庫實現我們更快的完成數據解析,提高我們的開發效率。
數據存儲
上一節講的是數據解析,我們解析完後的數據,可能就需要將數據存儲在某個地方,Android的五種存儲方式:
- Content Provider(主要用來向其他應用程序共享數據)
- SQLite(存儲數據到資料庫中)
- File(本地文件保存)
- SharedPreference(主要用來保存簡單的配置信息)
- 網路存儲(WebService返回的數據或是解析HTTP協議實現網路數據交互)
為了提高應用程序的響應時間,數據緩存是一個比較好的方式,我們可以預處理伺服器返回的數據,對數據進行緩存刷新。
優化點:
- 非同步請求網路數據
- 預處理伺服器返回數據
- 非同步進行數據存儲操作
- 數據緩存刷新
- Timeout超時重試
- 在主線程中操作UI
界面卡頓
ANR表示」應用程序無響應」,這個是需要我們避免發生的事情,出現這個異常的原因:
- 主線程 (「事件處理線程」 / 「UI線程」) 在5秒內沒有響應輸入事件
- BroadcastReceiver在10秒內沒有執行完畢
導致ANR的原因有很多,一般情況就是在UI線程做了耗時的操作,例如」網路請求」、資料庫操作。
那麼如何避免?
- UI線程只做界面刷新,不做任何耗時操作,耗時操作放在子線程來做
- 可以使用Thread+handle或者AsyncTask來進行邏輯處理
耗內存
每部手機的內存有限,我們這里所說的內存指的是手機的RAM,它是Ramdom Access Memory的縮寫,我們應用程序的需要隨機讀寫的數據就存在RAM中,Android手機之所以會比較耗內存,這跟Android後台的處理有關,我們知道Android應用是使用Java開發的,運行Java需要有虛擬機,說明每開啟一個應用都會創建一個虛擬機,而這是需要內存的,所以我們開的應用越多,後台進程越多,內存都分配出去了,才導致內存消耗的嚴重。
其實這個問題我們是沒得破的,只要內存不夠,我們的應用還是會卡。我們開發的應用依賴與系統給我們分配的堆內存,一般上限在16M~48M,但我們可以通過在AndroidManifest設置Application屬性largeHeap=「true」來申請更多的堆內存。
通過以下代碼獲取可用堆內存限制:
mActivityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
mMaxMemory = mActivityManager.getMemoryClass();1212
內存泄露
內存泄露這個問題已經被說爛了,大家都知道有內存泄露這個問題存在,但為什麼會發生內存泄露?
這里的內存泄露並不是真正意思上的泄露,而是因為內存不足不能進行GC操作,從而導致佔用內存過大,拋出out of memory異常,而被系統Kill掉。
JVM回收機制
是時候講講JVM的回收機制了,看下圖:
JVM對Java對象分了三個代進行管理,分別為年輕代、年老代、永久代。
年輕代(Young Generation):絕大多數的Java對象會在年輕代被分配,也會在年輕代被回收。
年老代(Old Generation):在年輕代長期存在沒有被回收的Java對象會轉移到年老代,這個堆空間通常會被比年輕代的堆空間要大。
永久代:存放VM和Java類的元數據,以及interned字元串和類的靜態變數。
這里涉及到JVM的相關知識,這里不繼續深入探討。
但我們應該可以知道垃圾回收器的作用:
- 分配內存
- 保證所有正在被引用的對象還存在於內存中
- 回收執行代碼已經不再引用的對象所佔的內存
對象引用
Java的引用類型可以分為以下幾種:
- 強引用(Strong Ref):強可達,去掉強可達,才會被回收。
- 軟引用(Soft Ref):內存夠用,就保持,內存吃緊,則回收,主要用來做緩存。
- 弱引用(Weak Ref):比Soft Ref弱,即使內存不吃緊也會被回收。
- 虛引用(Phantom Ref):不會在內存保持任何對象。
I. 旅遊類app怎麼優化,優化技巧
旅遊類App想要實現有效推廣,可以通過優化聯想詞的方式,以獲取相對精準的用戶。這方面,澤思的成功經驗較多。以旅遊問答類App韓國問我為例,可以做韓國、韓國旅遊等核心詞的聯想詞,獲取的用戶量大且精準。
J. 如何優化app的運行內存佔用
一、盡量減少Service的使用:
當你的app需要使用service來處理後台任務的時候,要保證當前的任務完成時,該service也要停止。另外,要注意的是,當停止這個service的時候,不要引起它的泄漏。
當啟動一個service之後,系統總會保持這個service處於運行狀態。這樣,就會佔用大量的RAM。所以,app的運行效率就會因此降低。
保留沒有用的service最可怕的內存管理錯誤。所以,一定要牢記,沒有必要使用service的時候就不用,用完了一定要記得將它銷毀!!!!
二、當界面變為不可見時,要記得釋放內存:
當用戶跳轉到其他界面時,並且當前界面不再可見的時候,要記得釋放當前這個界面中的資源。
當用戶退出某個界面時,記得在你的activity中實現onTrimMemory()(api4.0及以上)這個回調方法。調用這個方法,系統會收集不需要的內
三、當內存變少時,釋放內存:
在你的app運行過程中,當運行該app的設備所剩的RAM變得很少時,系統就會調用onTrimMemory()這個方法,這個方法中有幾個參數,表示不同的狀態。onTrimMemory()的具體使用,還請大家參加Android的開發文檔吧,本人手懶,就不詳細介紹啦。
四、檢查你所需要使用的內存:
可以通過getMemoryClass()估計一下你的app可用的heap。當你的app所需要的內存超過了這個可用值時,好了內存溢出就出現了。
這里有一個很特殊的方法,可以通過在manifest <application>標簽中將largeHeap的屬性值設置為true來請求更大的內存,主要注意的是,如果你採用了這種方法,那麼當你想要獲取可用內存時,就要使用 getLargeMemoryClass()。
不過由於每台機器的RAM是有限的,所以用這個還是小心吧,不需要用的時候還是不用了吧。
五、避免由bitmap引起的內存浪費:
bitmap還是很占內存的啊,當我們使用它的時候一定要小心。有幾個需要注意的方法:
1、不要直接使用這樣會佔用很大的內存,使用BitmapFactory.Options設置inSampleSize,根據手機屏幕大小來設置bitmap的大小, 這樣做可以減少對系統資源的要求。
2、緩存圖像到內存,採用軟引用緩存到內存,而不是在每次使用的時候都從新載入到內存;
3、採用低內存佔用量的編碼方式,比如Bitmap.Config.ARGB_4444比Bitmap.Config.ARGB_8888更省內存;
4、最後就是最重要的一點,當bitmap使用完之後一定要記得回收!!!
六、使用優化過的數據容器
盡量使用 SparseArray, SparseBooleanArray, LongSparseArray 等經過優化的容器類。通常來說HashMap的效率時比較低下的。
七、小心使用抽象類(方法)
適當的使用抽象類和方法能夠使我們的代碼更加靈活、易維護,但是這樣會增加app的內存佔用。所以,那些無關痛癢的東西,還是別抽象了吧。