• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Android平臺的在線影院APP開發(fā)與設(shè)計

      2021-05-07 18:23:19華春夢
      現(xiàn)代信息科技 2021年21期
      關(guān)鍵詞:性能測試安卓高效

      摘 ?要:在當(dāng)下快節(jié)奏的移動互聯(lián)網(wǎng)時代,智能手機和移動設(shè)備已不僅僅是一個通信工具,更成為人們利用碎片時間來學(xué)習(xí)、放松、娛樂的主要工具。針對目前市面上影院類APP所涵蓋內(nèi)容龐雜,廣告眾多以及啟動速度慢的問題,文章基于Android平臺,采用MVVM架構(gòu)和多級緩存技術(shù),設(shè)計開發(fā)了一款簡約版在線影院APP,通過性能測試,表明其運行穩(wěn)定,具有一定的實用和推廣價值。

      關(guān)鍵詞:安卓;在線影院;MVVM;高效;性能測試

      中圖分類號:TP311.5 ? ? ?文獻標識碼:A文章編號:2096-4706(2021)21-0029-04

      Abstract: In the current fast-paced mobile Internet era, smart phones and mobile devices are not only a communication tool, but also become the main tools for people to use fragmented time to learn, relax and entertain. Aiming at the problems of complex content, numerous advertisements and slow startup speed of cinema APP on the market, this paper designs and develops a simple online cinema APP based on Android platform, MVVM architecture and multi-level cache technology. The performance test shows that it runs stably and has a certain practical and popularization value.

      Keywords: Android; online cinema; MVVM; efficient; performance test

      0 ?引 ?言

      在奔向2025全面小康的進程中,人們的物質(zhì)和精神需求層次也隨之提高,其中表現(xiàn)之一就是電影事業(yè)的蓬勃發(fā)展[1],從2017年《戰(zhàn)狼2》到2021年的《長津湖》,都在不斷刷新中國電影票房紀錄,其中,在線影院類APP則起到了重要的宣傳作用。然而,有很多商家為了追求利益和流量,致使移動APP包羅萬象,內(nèi)容雜亂無章,廣告繁多無度,進而導(dǎo)致用戶的交互體驗感不斷下降。相較于封閉的iOS操作系統(tǒng),國內(nèi)則更多是采用開源開放的Android系統(tǒng)平臺,基于此,本文以Android為核心,開發(fā)設(shè)計了一款簡約易用的在線影院APP,不但節(jié)約了人們?yōu)g覽和搜索的時間,同時結(jié)合使用多級緩存技術(shù)和自定義控件技術(shù),大大優(yōu)化了用戶的交互體驗。

      1 ?系統(tǒng)關(guān)鍵技術(shù)概述

      1.1 ?Android系統(tǒng)架構(gòu)

      Android是一款基于Linux內(nèi)核且遵循Apache協(xié)議的移動智能終端操作系統(tǒng)[2,3],如圖1所示,其自下而上可以分為四層結(jié)構(gòu):

      (1)Linux Kernel驅(qū)動層。負責(zé)諸如顯示、觸摸、聲音等硬件相關(guān)的工作。

      (2)硬件抽象層(Hardware Abstraction Layer, HAL),以動態(tài)庫的形式加載相關(guān)模塊,供上層API調(diào)用。

      (3)Android Runtime核心運行庫和Native C/C++。提供Android應(yīng)用的運行環(huán)境,同時提供NDK開發(fā)語言的支持,包含Sqlite輕量數(shù)據(jù)庫。

      (4)Framework框架層。提供用戶開發(fā)的各種Java API,可以用于構(gòu)建UI、訪問網(wǎng)絡(luò)等。

      1.2 ?OkHttp與Retrofit網(wǎng)絡(luò)訪問

      OkHttp是Square開源的輕量級網(wǎng)絡(luò)訪問框架,是對Android原生Http訪問的封裝,支持異步請求和Http緩存,大大提高了網(wǎng)絡(luò)訪問性能[4]。Retrofit同樣是Square公司開源的,它基于OkHttp,同時支持RESTful API,與其他網(wǎng)絡(luò)框架不同的是,它更多地通過運行時注解的方式來提供功能,可以配置不同的反序列化工具(如Json、Xml等)進行數(shù)據(jù)解析,具有很強的解耦能力。

      1.3 ?Sqlite與Room數(shù)據(jù)庫

      Sqlite是一個純C語言實現(xiàn)的關(guān)系型數(shù)據(jù)庫,通過Sqlite可以持久化存儲較為復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但是使用純Sqlite對新手開發(fā)不太友好,上手的難度較高,需要借助大量的ContentValue對象為支撐,不符合典型數(shù)據(jù)訪問對象(Data Access Object, DAO)設(shè)計模式,故此,谷歌官方文檔中強烈建議以Room作為抽象層來訪問數(shù)據(jù)庫[5]。

      Room包含3個主要組件:

      (1)Database數(shù)據(jù)庫。即數(shù)據(jù)庫的持有者,作為應(yīng)用訪問持久關(guān)系型數(shù)據(jù)底層連接的主要接入點,實現(xiàn)類要使用@Database注解,并且注解中要添加數(shù)據(jù)庫關(guān)聯(lián)的實體列表。

      (2)Entity實體。表示數(shù)據(jù)庫中的表,表中的元素可以用@ColumnInfo來表示列名。

      (3)DAO數(shù)據(jù)訪問對象。表示訪問數(shù)據(jù)庫的方法(如增、刪、改、查等),同樣,方法也使用注解來標識具體的作用。

      應(yīng)用使用Room數(shù)據(jù)庫來獲取與該數(shù)據(jù)庫關(guān)聯(lián)的數(shù)據(jù)訪問對象(DAO);然后,應(yīng)用使用每個DAO從數(shù)據(jù)庫中獲取實體,對實體進行操作;最后,應(yīng)用使用實體來獲取和設(shè)置與數(shù)據(jù)庫中的表列相對應(yīng)的值。Room三大組件間的關(guān)系如圖2所示。

      2 ?系統(tǒng)概要設(shè)計

      2.1 ?系統(tǒng)架構(gòu)設(shè)計

      簡約版在線影院應(yīng)用APP包含用戶中心、影院和電影三個主要模塊,各模塊之間相互解耦且分工明確。用戶中心主要負責(zé)展示用戶的自畫像和購票記錄;影院模塊展示附近影院的位置和優(yōu)惠政策;電影模塊則展示近期熱映的電影信息。本文設(shè)計的在線影院APP系統(tǒng)架構(gòu)如圖3所示,主要涉及軟件和邏輯兩個維度。

      圖3(a)是系統(tǒng)的軟件架構(gòu),應(yīng)用通過Http協(xié)議從服務(wù)器端讀取數(shù)據(jù),然后利用Gson解析Json并將獲取的結(jié)果傳遞給業(yè)務(wù)層進行展示,最后加入三級緩存,Cache緩存、Room Sqlite數(shù)據(jù)庫存儲以及網(wǎng)絡(luò)云端緩存,實現(xiàn)用戶操作信息的持久化。

      圖3(b)是系統(tǒng)的邏輯架構(gòu),遵循MVVM架構(gòu)[6],目的是使APP各層次間盡量解耦,方便迭代和持續(xù)開發(fā)。本系統(tǒng)自上而下將APP的實現(xiàn)分為UI視圖層、數(shù)據(jù)訪問層和業(yè)務(wù)處理層,各層級的核心業(yè)務(wù)明確,層級間不存在復(fù)雜的關(guān)系,結(jié)構(gòu)相對松散,故而可以多人協(xié)作同步開發(fā),減少了維護成本。

      本APP立足于UI視圖內(nèi)容的展示,以數(shù)據(jù)訪問為核心,以業(yè)務(wù)封裝為關(guān)鍵,遵循簡約質(zhì)樸的設(shè)計原則:

      (1)UI視圖層。視圖層主要負責(zé)內(nèi)容的展示和交互操作,用戶基于Android的開發(fā)框架,結(jié)合Activity和Fragment就可以繪制出相對美觀的界面,配合滑動、點擊等事件,完成交互式響應(yīng)。

      (2)數(shù)據(jù)訪問層。互聯(lián)網(wǎng)時代,可以說,數(shù)據(jù)是一把“金鑰匙”,沒有后臺數(shù)據(jù),再好的交互也不可能實現(xiàn)。相較于Xml數(shù)據(jù)格式,Json以簡潔的層次關(guān)系,越來越受到開發(fā)者的青睞。本文的數(shù)據(jù)訪問層依托于Http請求和Json解析,在APP的內(nèi)容展示上起到數(shù)據(jù)支撐的作用。

      (3)業(yè)務(wù)處理層。遵循MVVM架構(gòu),以Model為數(shù)據(jù)實體,以View為UI視圖層,而ViewModel即為Model和UI綁定的關(guān)聯(lián)層。Model或View更新時,實時刷新對方,這便是業(yè)務(wù)處理層。ViewModel僅執(zhí)行業(yè)務(wù)邏輯相關(guān)的工作,以適配器Adapter的形式提供數(shù)據(jù)綁定更新,同時引入三級緩存,將用戶的偏好和部分操作進行離線存檔。

      2.2 ?界面框架設(shè)計

      本設(shè)計遵循簡約美觀的原則,采用Android的碎片化Fragment和Activity作為視圖容器的承載體,兩者都可以定義和管理自己的布局,處理用戶輸入事件,有自己的生命周期。在界面設(shè)計中,引入自定義控件以及可縮放矢量圖(Scalable Vector Graphics, SVG)使UI元素能夠自適應(yīng)、適配更多設(shè)備,同時減小了Apk的體積。

      2.3 ?數(shù)據(jù)存儲設(shè)計

      Android自帶的SharedPreference存儲只能存儲簡單的鍵值對,而寫入文件緩存也不能有效地實現(xiàn)結(jié)構(gòu)化的增刪操作,故而對用戶的偏好操作需要采用數(shù)據(jù)庫來維護。本設(shè)計主要涉及兩張表,一個是用戶信息、一個是電影訂單詳情,表1展示了電影訂單的字段信息。

      3 ?系統(tǒng)的實現(xiàn)

      本應(yīng)用使用三個Tab作為底部的導(dǎo)航欄,三大模塊統(tǒng)一用Fragment碎片化的方案實現(xiàn)。用戶中心主要展示用戶信息和用戶畫像,影院模塊負責(zé)附近影院信息的展示,而電影模塊則負責(zé)當(dāng)下熱映的電影圖文和音頻視頻的展示。本APP的最終實現(xiàn)效果以及交互時序如圖4所示,下面將分別對各個功能的詳細設(shè)計和實現(xiàn)方案進行介紹。

      3.1 ?用戶中心設(shè)計與實現(xiàn)

      用戶中心采用簡單的線性布局和自定義控件來實現(xiàn),圖標多使用SVG矢量圖轉(zhuǎn)換后的Xml來替代傳統(tǒng)的png,這樣就可以在Xml中靈活自如地對其顏色和大小進行更改,且可以保持良好的彈性形變。其中自定義圓形用戶畫像的控件需要重點實現(xiàn)onDraw繪制的方法,此方法的兩個核心是畫筆和畫布[7]?!拔业挠唵巍眲t是通過Room讀取用戶的購票記錄,然后以列表的形式進行展示。

      3.2 ?影院模塊功能設(shè)計與實現(xiàn)

      影院模塊的信息展示采用RecyclerView組件配合適配器(Adapter)的設(shè)計模式。首先,在頁面視圖創(chuàng)建的生命周期中,通過異步線程完成服務(wù)器端的Http網(wǎng)絡(luò)請求;其次,利用GSON將此數(shù)據(jù)解析為Java Bean對象;最后,將此Java Bean數(shù)據(jù)中的有效信息進行封裝并傳入適配器以完成數(shù)據(jù)和視圖的綁定更新。整個網(wǎng)絡(luò)訪問及數(shù)據(jù)解析和視圖綁定流程如圖4(a)所示,然而,考慮到影院信息變化不頻繁,我們會將成功的請求內(nèi)容寫入臨時的Cache緩存,以方便下一次的離線更新,一方面節(jié)省了用戶流量,另一方面則加快了頁面的響應(yīng)速度。

      3.3 ?電影模塊功能設(shè)計與實現(xiàn)

      電影模塊相比影院純文字的描述,多了圖片和視頻的參與,但總體的數(shù)據(jù)請求和視圖綁定流程是一致的,二者都遵循MVVM高內(nèi)聚低耦合的設(shè)計模式。針對影片的圖像加載,本文使用了Glide第三方庫,它支持動態(tài)加載和異步更新,同時還具備離線緩存技術(shù),極大地提升了用戶的交互體驗,電影預(yù)告片的播放使用了Android原生的MediaPlayer和SurfaceView技術(shù),影片的播放進度更新使用了Timer定時器來實現(xiàn)。在電影的播放頁面,用戶可以選擇影票的購買,此時系統(tǒng)會利用Room數(shù)據(jù)庫,保存用戶的購買記錄,以便用戶可在用戶中心的訂單中進行查詢。

      (a)在線影院和電影頁面的交互時序

      經(jīng)過代碼的編寫,最終實現(xiàn)的簡約在線影院APP效果如圖4(b)所示。

      4 ?測試

      通過Profiler工具對在線影院進行一定時間的性能測試,得出的結(jié)果如圖5所示。從圖中我們可以得出以下結(jié)論:(1)測試結(jié)果包含三大核心模塊,即Cinema(影院)、Movie(電影)、User(用戶中心);(2)CPU、內(nèi)存及網(wǎng)絡(luò)在非網(wǎng)絡(luò)訪問狀態(tài)下,基本都處于空閑狀態(tài);(3)只有當(dāng)播放在線視頻時,伴隨著網(wǎng)絡(luò)流量的消耗,CPU的負載才會出現(xiàn)持續(xù)的小幅波動,內(nèi)存同樣會經(jīng)歷一段時間的上升,但都維持在中等以下,基本符合預(yù)期。

      5 ?結(jié) ?論

      本文利用Android平臺的相關(guān)技術(shù),基于MVVM框架開發(fā)了一款簡約的在線影院APP,可以使人們免除廣告干擾,快速查看及訂閱感興趣的電影,通過Cache緩存和Room數(shù)據(jù)存儲實現(xiàn)多級緩存,既避免了重復(fù)網(wǎng)絡(luò)內(nèi)容的多次請求,又加快了應(yīng)用的響應(yīng)時間。引入自定義控件,美化了APP的外觀,經(jīng)過性能測試和壓力測試得出,APP運行穩(wěn)定,交互靈敏,達到了預(yù)期的設(shè)計目標,具有一定的實用價值。

      參考文獻:

      [1] 周程帆,王貴鑫.基于Android平臺的影院票務(wù)管理系統(tǒng)的設(shè)計與實現(xiàn) [J].科學(xué)技術(shù)創(chuàng)新,2019(32):62-64.

      [2] 張蕾.基于Android的短視頻制作分享平臺的設(shè)計與實現(xiàn) [D].北京:北京交通大學(xué),2021.

      [3]李剛.瘋狂 Android 講義:第2版 [M].北京:電子工業(yè)出版社,2014.

      [4] 楊錳.基于Android平臺的新聞客戶端的設(shè)計與實現(xiàn) [D].北京:北京郵電大學(xué),2021.

      [5] 熊艷秋.基于Android平臺在線視頻播放APP的設(shè)計與實現(xiàn) [D].荊州:長江大學(xué),2020.

      [6] 崔慧娟.MVVM模式在Android項目中的應(yīng)用 [J].信息與電腦(理論版),2021,33(6):1-3.

      [7] 許艦.Android自定義繪圖組件的設(shè)計與實現(xiàn) [J].電腦知識與技術(shù),2018,14(10):95-98.

      作者簡介:華春夢(1990.04—),男,漢族,河南南陽人,助教,碩士研究生,研究方向:嵌入式Linux、機器學(xué)習(xí)、人工智能。

      猜你喜歡
      性能測試安卓高效
      文物表情包
      Hadoop性能測試自動化研究
      一種基于安卓系統(tǒng)的手機側(cè)抓包分析方法
      農(nóng)田水利工程高效節(jié)水灌溉發(fā)展思路初探
      提高提問的有效性, 構(gòu)筑高效的語文課堂
      考試周刊(2016年77期)2016-10-09 10:47:06
      打造務(wù)實、創(chuàng)新、高效的語文課堂
      考試周刊(2016年76期)2016-10-09 08:32:41
      高校三維動畫課程教學(xué)方法研究
      成才之路(2016年25期)2016-10-08 10:00:36
      關(guān)于Java軟件的性能測試分析
      論轉(zhuǎn)向系統(tǒng)匹配構(gòu)架和實踐
      安卓L未至安卓M來了!安卓首泄漏M系統(tǒng)
      得荣县| 昭平县| 海口市| 隆德县| 临汾市| 龙江县| 梨树县| 丹江口市| 仁化县| 青神县| 红桥区| 滦南县| 芷江| 赞皇县| 宁晋县| 木里| 元江| 台中市| 武安市| 永善县| 金塔县| 芷江| 光泽县| 九江市| 巩义市| 广宗县| 孝昌县| 封丘县| 承德市| 上栗县| 犍为县| 宜州市| 新巴尔虎右旗| 广丰县| 桦甸市| 连平县| 历史| 九江市| 偃师市| 甘肃省| 金乡县|