Article(id=1200101316145021435, tenantId=1146029695717560320, journalId=1189645257101713411, issueId=1200101314932863455, articleNumber=null, orderNo=null, doi=10.19822/j.cnki.1671-6329.20220166, pmid=null, cstr=null, oa=null, hot=null, price=null, onlineType=0, articleFormat=0, articleType=null, articleTypeStr=research-article, receivedDate=null, receivedDateStr=null, revisedDate=null, revisedDateStr=null, acceptedDate=null, acceptedDateStr=null, onlineDate=1764056050573, onlineDateStr=2025-11-25, pubDate=1704384000000, pubDateStr=2024-01-05, doiRegisterDate=null, doiRegisterDateStr=null, onlineIssueDate=1764056050573, onlineIssueDateStr=2025-11-25, onlineJustAcceptDate=null, onlineJustAcceptDateStr=null, onlineFirstDate=null, onlineFirstDateStr=null, sourceXml=null, magXml=null, createTime=1764056050573, creator=13701087609, updateTime=1764056050573, updator=13701087609, issue=Issue{id=1200101314932863455, tenantId=1146029695717560320, journalId=1189645257101713411, year='2024', volume='', issue='1', pageStart='1', pageEnd='62', issueExtLink='null', onlineDate='null', pubDate='null', beforeIssueId=null, nextIssueId=null, price=null, status=1, issueComplete=1, articleOrder=1, issueType=-1, specialIssue=null, createTime=1764056050284, creator=13701087609, updateTime=1764225121473, updator=13701087609, preIssue=null, nextIssue=null, ext={EN=IssueExt(id=1200810450981081697, tenantId=1146029695717560320, journalId=1189645257101713411, issueId=1200101314932863455, language=EN, specialIssueTitle=, coverIllustrator=null, specialIssueEditor=, specialIssueAbout=), CN=IssueExt(id=1200810450981081698, tenantId=1146029695717560320, journalId=1189645257101713411, issueId=1200101314932863455, language=CN, specialIssueTitle=, coverIllustrator=null, specialIssueEditor=, specialIssueAbout=)}, issueFiles=null}, startPage=1, endPage=7, ext={EN=ArticleExt(id=1200101316421845501, articleId=1200101316145021435, tenantId=1146029695717560320, journalId=1189645257101713411, language=EN, title=Research and Application on Design Modes for Android Application on Vehicle, columnId=null, journalTitle=Automotive Digest, columnName=null, runingTitle=null, highlight=null, articleAbstract=

In automobiles, electronic control components can be connected into a local area network through the CAN protocol for information transmission. The in-car entertainment system plays an important role in interacting with users among these electronic components. In order to meet the users’ ecological needs and provide a friendly interface operation experience, the Android system has been introduced into the in-car entertainment system. This study mainly explores the implementation of accessing the CAN network through Android applications using the Model-View-Controller (MVC), Model-View-Presenter (MVP), and Model-View-View Model (MVVM) design patterns, and compares these 3 design patterns to analyze their advantages and disadvantages in accessing the CAN network. Ultimately, it concludes that the MVVM design pattern is more suitable for the application of accessing the CAN network in the In-Vehicle Infotainment system.

, correspAuthors=null, authorNote=null, correspAuthorsNote=null, copyrightStatement=null, copyrightOwner=null, extLink=null, articleAbsUrl=null, sourceXml=null, magXml=null, pdfUrl=null, pdf=null, pdfFileSize=null, pdfExtLink=null, richHtmlUrl=null, mobilePdfUrl=null, reviewReport=null, pdfFirstPage=null, abstractGraph=null, abstractGraphContent=null, abstractVideo=null, citation=null, cebUrl=null, magXmlContent=null, mapNumber=null, authorCompany=null, fund=null, authors=null, authorsList=Hui Huang, Jingxuan Li), CN=ArticleExt(id=1200101317524947468, articleId=1200101316145021435, tenantId=1146029695717560320, journalId=1189645257101713411, language=CN, title=车载CAN通信Android应用的设计模式研究与应用, columnId=0, journalTitle=汽车文摘, columnName=, runingTitle=null, highlight=null, articleAbstract=

在汽车中,电子控制器件可以通过CAN协议连接成局域网络用于信息传输。车载娱乐系统在这些电子器件中扮演着与用户交互的重要角色,为了满足用户生态化需求和友好的界面操作体验,Android系统被引入车载娱乐系统中。文中主要探讨了通过Android应用程序采用模型-视图-控制器(Model-View-Controller,MVC)、模型-视图-表示器(Model-View-Presenter,MVP)和模型-视图-视图模型(Model-View-View Model,MVVM)设计模式来访问CAN网络的实现方式,并对这3种设计模式进行了比较,分析它们在访问CAN网络方面的优缺点,结果表明MVVM设计模式更适合于车载娱乐系统应用程序访问CAN网络。

, correspAuthors=null, authorNote=null, correspAuthorsNote=null, copyrightStatement=null, copyrightOwner=null, extLink=null, articleAbsUrl=null, sourceXml=S0GIq/mTtxWEWPPhB4l9+A==, magXml=BkqPhMfflsBHpZ9i8DWAqw==, pdfUrl=null, pdf=8m/hwS9mQdny8ND/A8Sj0A==, pdfFileSize=805056, pdfExtLink=null, richHtmlUrl=null, mobilePdfUrl=null, reviewReport=null, pdfFirstPage=null, abstractGraph=M+6Z4T8r9qK3VXX2zoTJQQ==, abstractGraphContent=null, abstractVideo=null, citation=null, cebUrl=null, magXmlContent=VXHsQi/lEY1uF5e008U7Xg==, mapNumber=null, authorCompany=null, fund=null, authors=

黄慧,工学学士学位,现就职于中国第一汽车股份有限公司研发总院智能网联开发院,主要研究方向为软件架构智能座舱。E-mail:

李荆轩:工学硕士学位,现就职于一汽-大众技术开发部,主要研究方向为智能座舱。E-mail:

, authorsList=黄慧, 李荆轩)}, authors=[Author(id=1200101317977932320, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, orderNo=0, firstName=null, middleName=null, lastName=null, nameCn=null, orcid=null, stid=null, country=null, authorPic=null, dead=0, email=huanghui@faw.com.cn, emailSecond=null, emailThird=null, correspondingAuthor=0, authorType=1, ext={EN=AuthorExt(id=1200101318082789925, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, authorId=1200101317977932320, language=EN, stringName=Hui Huang, firstName=Hui, middleName=null, lastName=Huang, prefix=null, suffix=null, authorComment=null, nameInitials=null, affiliation=null, department=null, xref=1, address=1 Global R&D Center, China FAW Corporation Limited, Changchun 130013, bio=null, bioImg=null, bioContent=null, aboutCorrespAuthor=null), CN=AuthorExt(id=1200101318221201961, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, authorId=1200101317977932320, language=CN, stringName=黄慧, firstName=null, middleName=null, lastName=null, prefix=null, suffix=null, authorComment=null, nameInitials=null, affiliation=null, department=null, xref=1, address=1 中国第一汽车股份有限公司研发总院, 长春 130013, bio={"content":"

黄慧,工学学士学位,现就职于中国第一汽车股份有限公司研发总院智能网联开发院,主要研究方向为软件架构智能座舱。E-mail:

"}, bioImg=null, bioContent=

黄慧,工学学士学位,现就职于中国第一汽车股份有限公司研发总院智能网联开发院,主要研究方向为软件架构智能座舱。E-mail:

, aboutCorrespAuthor=null)}, companyList=[AuthorCompany(id=1200101317738856978, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, xref=1, ext=[AuthorCompanyExt(id=1200101317747245587, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317738856978, language=EN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=1 Global R&D Center, China FAW Corporation Limited, Changchun 130013), AuthorCompanyExt(id=1200101317755634196, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317738856978, language=CN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=1 中国第一汽车股份有限公司研发总院, 长春 130013)])]), Author(id=1200101318342836783, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, orderNo=1, firstName=null, middleName=null, lastName=null, nameCn=null, orcid=null, stid=null, country=null, authorPic=null, dead=0, email=jingxuan.li@faw-vw.com, emailSecond=null, emailThird=null, correspondingAuthor=0, authorType=1, ext={EN=AuthorExt(id=1200101318451888693, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, authorId=1200101318342836783, language=EN, stringName=Jingxuan Li, firstName=Jingxuan, middleName=null, lastName=Li, prefix=null, suffix=null, authorComment=null, nameInitials=null, affiliation=null, department=null, xref=2, address=2 Technical Development Department, FAW-Volkswagen Automotive Co., Ltd, Changchun 130011, bio=null, bioImg=null, bioContent=null, aboutCorrespAuthor=null), CN=AuthorExt(id=1200101318548357689, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, authorId=1200101318342836783, language=CN, stringName=李荆轩, firstName=null, middleName=null, lastName=null, prefix=null, suffix=null, authorComment=null, nameInitials=null, affiliation=null, department=null, xref=2, address=2 一汽大众汽车有限公司, 长春 130011, bio={"content":"

李荆轩:工学硕士学位,现就职于一汽-大众技术开发部,主要研究方向为智能座舱。E-mail:

"}, bioImg=null, bioContent=

李荆轩:工学硕士学位,现就职于一汽-大众技术开发部,主要研究方向为智能座舱。E-mail:

, aboutCorrespAuthor=null)}, companyList=[AuthorCompany(id=1200101317868880408, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, xref=2, ext=[AuthorCompanyExt(id=1200101317877269017, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317868880408, language=EN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=2 Technical Development Department, FAW-Volkswagen Automotive Co., Ltd, Changchun 130011), AuthorCompanyExt(id=1200101317885657626, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317868880408, language=CN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=2 一汽大众汽车有限公司, 长春 130011)])])], keywords=[Keyword(id=1200101318665798204, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, orderNo=1, keyword=Android application), Keyword(id=1200101318770655808, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, orderNo=2, keyword=Design mode), Keyword(id=1200101318888096325, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, orderNo=3, keyword=MVC), Keyword(id=1200101319039091274, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, orderNo=4, keyword=MVP), Keyword(id=1200101319152337486, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, orderNo=5, keyword=MVVM), Keyword(id=1200101319236223570, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, orderNo=1, keyword=Android应用), Keyword(id=1200101319349469783, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, orderNo=2, keyword=设计模式), Keyword(id=1200101319471104603, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, orderNo=3, keyword=MVC), Keyword(id=1200101319580156509, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, orderNo=4, keyword=MVP), Keyword(id=1200101319735345762, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, orderNo=5, keyword=MVVM)], refs=[Reference(id=1200101320993637003, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2013, volume=null, issue=null, pageStart=3, pageEnd=null, url=null, language=null, rfNumber=[1], rfOrder=0, authorNames=马鑫, journalName=基于Android车载娱乐系统的iPod功能实现, refType=null, unstructuredReference=马鑫. 基于Android车载娱乐系统的iPod功能实现[D]. 南京: 东南大学, 2013: 3., articleTitle=null, refAbstract=null), Reference(id=1200101321127854740, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2008, volume=29, issue=8, pageStart=3, pageEnd=4, url=null, language=null, rfNumber=[2], rfOrder=1, authorNames=唐朝霞, journalName=湖南科技学院学报, refType=null, unstructuredReference=唐朝霞. 基于Web的高校院(系)资料室个性化信息服务体系研究[J]. 湖南科技学院学报, 2008, 29(8): 3-4., articleTitle=基于Web的高校院(系)资料室个性化信息服务体系研究, refAbstract=null), Reference(id=1200101321249489565, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2015, volume=null, issue=null, pageStart=null, pageEnd=null, url=null, language=null, rfNumber=[3], rfOrder=2, authorNames=锁玺, journalName=基于REST的基层社区健康平台的设计与实现, refType=null, unstructuredReference=锁玺. 基于REST的基层社区健康平台的设计与实现[D]. 西安: 西安电子科技大学, 2015., articleTitle=null, refAbstract=null), Reference(id=1200101321362735782, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2009, volume=26, issue=1, pageStart=4, pageEnd=5, url=null, language=null, rfNumber=[4], rfOrder=3, authorNames=张志强, 刘巧玲, journalName=中州大学学报, refType=null, unstructuredReference=张志强, 刘巧玲. 基于J2EE的软件虚拟实训系统的MVC架构实现[J]. 中州大学学报, 2009, 26(1): 4-5., articleTitle=基于J2EE的软件虚拟实训系统的MVC架构实现, refAbstract=null), Reference(id=1200101321463399079, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2009, volume=null, issue=null, pageStart=null, pageEnd=null, url=null, language=null, rfNumber=[5], rfOrder=4, authorNames=王一锋, journalName=基于Ruby on Rails和Flex3的RIA研究与应用, refType=null, unstructuredReference=王一锋. 基于Ruby on Rails和Flex3的RIA研究与应用[D]. 贵阳: 贵州大学, 2009., articleTitle=null, refAbstract=null), Reference(id=1200101321585033900, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2018, volume=null, issue=null, pageStart=null, pageEnd=null, url=null, language=null, rfNumber=[6], rfOrder=5, authorNames=周康毅, journalName=基于安卓平台的教学助手系统的设计与实现, refType=null, unstructuredReference=周康毅. 基于安卓平台的教学助手系统的设计与实现[D]. 武汉: 华中师范大学, 2018., articleTitle=null, refAbstract=null), Reference(id=1200101321698280116, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2018, volume=null, issue=11Z, pageStart=4, pageEnd=5, url=null, language=null, rfNumber=[7], rfOrder=6, authorNames=张沈梅, 孙昊, 王玲, journalName=电脑知识与技术: 学术版, refType=null, unstructuredReference=张沈梅, 孙昊, 王玲, 等. 基于微信小程序的课程在线测试系统[J]. 电脑知识与技术: 学术版, 2018(11Z): 4-5., articleTitle=基于微信小程序的课程在线测试系统, refAbstract=null), Reference(id=1200101321845080763, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2012, volume=null, issue=null, pageStart=null, pageEnd=null, url=null, language=null, rfNumber=[8], rfOrder=7, authorNames=潘昊, journalName=基于MVP模式的用户界面层的研究与实现, refType=null, unstructuredReference=潘昊. 基于MVP模式的用户界面层的研究与实现[D]. 南京: 东南大学, 2012., articleTitle=null, refAbstract=null), Reference(id=1200101321933161156, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2017, volume=36, issue=9, pageStart=2, pageEnd=3, url=null, language=null, rfNumber=[9], rfOrder=8, authorNames=崔绍龙, 彭玲, 李森, journalName=消防科学与技术, refType=null, unstructuredReference=崔绍龙, 彭玲, 李森, 等. 室内外一体化的消防设施巡检系统构建[J]. 消防科学与技术, 2017, 36(9): 2-3., articleTitle=室内外一体化的消防设施巡检系统构建, refAbstract=null), Reference(id=1200101322071573195, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2015, volume=null, issue=null, pageStart=null, pageEnd=null, url=null, language=null, rfNumber=[10], rfOrder=9, authorNames=汪润泽, journalName=车间刀具全生命周期管理系统设计与实现, refType=null, unstructuredReference=汪润泽. 车间刀具全生命周期管理系统设计与实现[D]. 武汉: 华中科技大学, 2015., articleTitle=null, refAbstract=null), Reference(id=1200101322193208015, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, doi=null, pmid=null, pmcid=null, year=2015, volume=null, issue=null, pageStart=null, pageEnd=null, url=null, language=null, rfNumber=[11], rfOrder=10, authorNames=王汉肖, journalName=手机购物方案生成系统的设计与实现, refType=null, unstructuredReference=王汉肖. 手机购物方案生成系统的设计与实现[D]. 济南: 山东大学, 2015., articleTitle=null, refAbstract=null)], funds=null, companyList=[AuthorCompany(id=1200101317738856978, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, xref=1, ext=[AuthorCompanyExt(id=1200101317747245587, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317738856978, language=EN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=1 Global R&D Center, China FAW Corporation Limited, Changchun 130013), AuthorCompanyExt(id=1200101317755634196, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317738856978, language=CN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=1 中国第一汽车股份有限公司研发总院, 长春 130013)]), AuthorCompany(id=1200101317868880408, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, xref=2, ext=[AuthorCompanyExt(id=1200101317877269017, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317868880408, language=EN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=2 Technical Development Department, FAW-Volkswagen Automotive Co., Ltd, Changchun 130011), AuthorCompanyExt(id=1200101317885657626, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, companyId=1200101317868880408, language=CN, country=null, province=null, city=null, postcode=null, companyName=null, departmentName=null, remark=2 一汽大众汽车有限公司, 长春 130011)])], figs=[ArticleFig(id=1200101319907312232, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, label=null, caption=null, figureFileSmall=BeyDYGEHcnZv8O4iuv+d0w==, figureFileBig=M+6Z4T8r9qK3VXX2zoTJQQ==, tableContent=null), ArticleFig(id=1200101320121221741, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, label=图1, caption=MVC设计模式逻辑[4], figureFileSmall=BeyDYGEHcnZv8O4iuv+d0w==, figureFileBig=M+6Z4T8r9qK3VXX2zoTJQQ==, tableContent=null), ArticleFig(id=1200101320377074294, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, label=null, caption=null, figureFileSmall=Ejm+ZxY925LVDXUoXo96gw==, figureFileBig=VZubn/4BR4ZCvUMAHRPbSw==, tableContent=null), ArticleFig(id=1200101320528069243, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, label=图2, caption=MVP设计模式逻辑[9], figureFileSmall=Ejm+ZxY925LVDXUoXo96gw==, figureFileBig=VZubn/4BR4ZCvUMAHRPbSw==, tableContent=null), ArticleFig(id=1200101320641315455, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=EN, label=null, caption=null, figureFileSmall=88gVyVnmLV+LU2TDmQZJXg==, figureFileBig=tOO84pJvFh0h4WeaRww3UA==, tableContent=null), ArticleFig(id=1200101320821670531, tenantId=1146029695717560320, journalId=1189645257101713411, articleId=1200101316145021435, language=CN, label=图3, caption=MVVM设计模式逻辑[3], figureFileSmall=88gVyVnmLV+LU2TDmQZJXg==, figureFileBig=tOO84pJvFh0h4WeaRww3UA==, tableContent=null)], attaches=null, journal=Journal(id=1149694111122235398, delFlag=0, nameCn=汽车文摘, nameEn=Automotive Digest, nameHistory1=null, nameHistory2=null, issn=1671-6329, eissn=null, cn=22-1112/U, coden=null, periodic=0, language=CN, oaType=null, ccby=null, superviseOffice=null, ownerOffice=null, pubOffice=null, editorOffice=null, officeType=null, aims=null, clcCode=null, officeProv=null, officeCity=null, officeAddr=null, officeZip=null, officeEmail=null, officePhone=null, editDirector=null, officeDirector=null, officeDirectorPhone=null, officeStaffNum=null, officeEmpNum=null, coverPicUrl=luiJW6+BcEXciylORYcumg==, journalPrice=null, startedYear=null, abbrevIsoEn=null, journalRemark=null, publicationField=null, createdTime=1752038036376, updatedTime=1761735682597, createdBy=18614031015, updatedBy=13701087609, firstLetterCn=A, firstLetterEn=A, subjectCode=Engineering, subjectName=Engineering, subjectCodeEn=Engineering, subjectNameEn=null, picCn=luiJW6+BcEXciylORYcumg==, picEn=O+ZP75C19YktWcRPOtyJBw==, jcr=null, cjcr=null, exts=[JournalExt(id=1190368987570606240, language=CN, name=汽车文摘, nameHistory1=null, nameHistory2=null, managedBy=, sponsoredBy=, publishedBy=, editorOffice=, officeProv=null, officeCity=null, officeAddr=, officeZip=, editDirector=, officeDirector=null, officePhone=null, coverPicUrl=null, journalRemark=, submitArticleUrl=null, websiteUrl=, createdTime=1761735682623, updatedTime=1761735682623, createdBy=13701087609, updatedBy=13701087609, submissionGuidelinesUrl=, submissionAuthorUrl=https://qcwz.cbpt.cnki.net/index.aspx?t=1, submissionEditorUrl=https://qcwz.cbpt.cnki.net/index.aspx?t=3, submissionReviewUrl=https://qcwz.cbpt.cnki.net/index.aspx?t=2, submissionCeEditorUrl=, submissionAeEditorUrl=, option={"copyright":""}), JournalExt(id=1190368987625132193, language=EN, name=Automotive Digest, nameHistory1=null, nameHistory2=null, managedBy=, sponsoredBy=, publishedBy=, editorOffice=, officeProv=null, officeCity=null, officeAddr=, officeZip=, editDirector=, officeDirector=null, officePhone=null, coverPicUrl=null, journalRemark=, submitArticleUrl=null, websiteUrl=, createdTime=1761735682636, updatedTime=1761735682636, createdBy=13701087609, updatedBy=13701087609, submissionGuidelinesUrl=, submissionAuthorUrl=https://qcwz.cbpt.cnki.net/index.aspx?t=1, submissionEditorUrl=https://qcwz.cbpt.cnki.net/index.aspx?t=3, submissionReviewUrl=https://qcwz.cbpt.cnki.net/index.aspx?t=2, submissionCeEditorUrl=, submissionAeEditorUrl=, option={"copyright":""})], databaseList=null, tenantJournalId=1189645257101713411, websiteList=[Website(id=1189645359124066938, webName=null, webTitle=null, webDomain=null, webCopyrigh=null, webIpcNo=null, seoTitle=null, seoKeywords=null, seoDescription=null, tenantJournalId=null, journalId=1189645257101713411, journalNameCn=null, journalNameEn=null, grayFlag=null, tenantId=1146029695717560320, platformId=null, journalGroupId=null, journalGroupNameCn=null, journalGroupNameEn=null, type=1, domain=https://castjournals.cast.org.cn/joweb/qcwz/CN, language=CN, createTime=1761563156157, createBy=18614031015, updateTime=1761563183518, updateBy=18614031015, name=汽车文摘-中文, tplId=1146099689490845704, title=汽车文摘, delFlag=0, indexPage=/home, props=[WebsiteProps(id=1189645933336867479, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=articleTextType, value=kx, createTime=1761563293060, updateTime=1761563293060, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933315895956, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=banner, value=null, createTime=1761563293055, updateTime=1761563293055, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933353644698, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=grayFlag, value=0, createTime=1761563293064, updateTime=1761563293064, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933307507347, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=logo, value=https://castjournals.cast.org.cn/joweb/qcwz/CN/file/pic?fileId=wLaOR3KnYrzJXN7hXuyp1Q==, createTime=1761563293053, updateTime=1761563293053, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933366227612, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=minRunFlag, value=0, createTime=1761563293067, updateTime=1761563293067, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933332673174, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=picServerUrl, value=https://castjournals.cast.org.cn/joweb/qcwz/CN/file/pic, createTime=1761563293059, updateTime=1761563293059, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933362033307, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=silenceFlag, value=0, createTime=1761563293066, updateTime=1761563293066, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933324284565, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=staticResourcePath, value=https://castjournals.cast.org.cn/joweb/cast_kjdb_cn_619/, createTime=1761563293057, updateTime=1761563293057, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933345256088, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=themeColor, value=null, createTime=1761563293062, updateTime=1761563293062, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645933349450393, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359124066938, code=themeStyle, value=null, createTime=1761563293063, updateTime=1761563293063, creator=18614031015, updator=18614031015)]), Website(id=1189645359224730237, webName=null, webTitle=null, webDomain=null, webCopyrigh=null, webIpcNo=null, seoTitle=null, seoKeywords=null, seoDescription=null, tenantJournalId=null, journalId=1189645257101713411, journalNameCn=null, journalNameEn=null, grayFlag=null, tenantId=1146029695717560320, platformId=null, journalGroupId=null, journalGroupNameCn=null, journalGroupNameEn=null, type=1, domain=https://castjournals.cast.org.cn/joweb/qcwz/EN, language=EN, createTime=1761563156181, createBy=18614031015, updateTime=1761563214005, updateBy=18614031015, name=汽车文摘-英文, tplId=1146101810881728533, title=Automotive Digest, delFlag=0, indexPage=/home, props=[WebsiteProps(id=1189645970888471201, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=articleTextType, value=kx, createTime=1761563302013, updateTime=1761563302013, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970871693982, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=banner, value=null, createTime=1761563302009, updateTime=1761563302009, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970905248420, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=grayFlag, value=0, createTime=1761563302017, updateTime=1761563302017, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970863305373, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=logo, value=https://castjournals.cast.org.cn/joweb/qcwz/EN/file/pic?fileId=wLaOR3KnYrzJXN7hXuyp1Q==, createTime=1761563302007, updateTime=1761563302007, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970917831334, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=minRunFlag, value=0, createTime=1761563302020, updateTime=1761563302020, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970884276896, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=picServerUrl, value=https://castjournals.cast.org.cn/joweb/qcwz/EN/file/pic, createTime=1761563302012, updateTime=1761563302012, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970913637029, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=silenceFlag, value=0, createTime=1761563302019, updateTime=1761563302019, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970880082591, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=staticResourcePath, value=https://castjournals.cast.org.cn/joweb/cast_kjdb_en_623/, createTime=1761563302011, updateTime=1761563302011, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970892665506, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=themeColor, value=null, createTime=1761563302014, updateTime=1761563302014, creator=18614031015, updator=18614031015), WebsiteProps(id=1189645970896859811, tenantId=1146029695717560320, journalId=null, journalGroupId=null, siteId=1189645359224730237, code=themeStyle, value=null, createTime=1761563302015, updateTime=1761563302015, creator=18614031015, updator=18614031015)])], journalTitle=汽车文摘, weixinUrl=null, journalUrl=https://qcwz.cbpt.cnki.net/, iacademicId=null, status=1, seqNo=null, journalTitleEn=Automotive Digest, journalPhotoCn=luiJW6+BcEXciylORYcumg==, journalPhotoEn=O+ZP75C19YktWcRPOtyJBw==, journalFirstLetter=A, journalRecommend=null, journalNew=null, journalCollection=null, jcrJf=null, cjcrJf=null, jcrJfStr=null, cjcrJfStr=null, submissionFirstDecision=null, sciSubjectClassification=null, casSubjectClassification=null, citeScore=null, totalCitationFrequency=null, icpCode=null, psCode=null, advertisingLicenseCode=null, copyrightInformation=null, country=null, option=, provinceCode=null, provinceName=null, collectFlag=false), detailUrlCn=https://castjournals.cast.org.cn/joweb/qcwz/CN/10.19822/j.cnki.1671-6329.20220166, detailUrlEn=https://castjournals.cast.org.cn/joweb/qcwz/EN/10.19822/j.cnki.1671-6329.20220166, pdfUrlCn=https://castjournals.cast.org.cn/joweb/qcwz/CN/PDF/10.19822/j.cnki.1671-6329.20220166, pdfUrlEn=https://castjournals.cast.org.cn/joweb/qcwz/EN/PDF/10.19822/j.cnki.1671-6329.20220166, aliStartDate=null, aliEndDate=null, collectionFlag=false, citedCount=null, citedUrl=null, reference=null)
收藏切换
车载CAN通信Android应用的设计模式研究与应用
收藏切换
PDF下载
黄慧 1 , 李荆轩 2
汽车文摘 | 2024,(1): 1-7
收起
收藏切换
汽车文摘 | 2024, (1): 1-7
车载CAN通信Android应用的设计模式研究与应用
全屏
黄慧1 , 李荆轩2
作者信息
  • 1 中国第一汽车股份有限公司研发总院, 长春 130013
  • 2 一汽大众汽车有限公司, 长春 130011
  • 黄慧,工学学士学位,现就职于中国第一汽车股份有限公司研发总院智能网联开发院,主要研究方向为软件架构智能座舱。E-mail:

    李荆轩:工学硕士学位,现就职于一汽-大众技术开发部,主要研究方向为智能座舱。E-mail:

Research and Application on Design Modes for Android Application on Vehicle
Hui Huang1 , Jingxuan Li2
Affiliations
  • 1 Global R&D Center, China FAW Corporation Limited, Changchun 130013
  • 2 Technical Development Department, FAW-Volkswagen Automotive Co., Ltd, Changchun 130011
出版时间: 2024-01-05 doi: 10.19822/j.cnki.1671-6329.20220166
文章导航
收藏切换

在汽车中,电子控制器件可以通过CAN协议连接成局域网络用于信息传输。车载娱乐系统在这些电子器件中扮演着与用户交互的重要角色,为了满足用户生态化需求和友好的界面操作体验,Android系统被引入车载娱乐系统中。文中主要探讨了通过Android应用程序采用模型-视图-控制器(Model-View-Controller,MVC)、模型-视图-表示器(Model-View-Presenter,MVP)和模型-视图-视图模型(Model-View-View Model,MVVM)设计模式来访问CAN网络的实现方式,并对这3种设计模式进行了比较,分析它们在访问CAN网络方面的优缺点,结果表明MVVM设计模式更适合于车载娱乐系统应用程序访问CAN网络。

Android应用  /  设计模式  /  MVC  /  MVP  /  MVVM

In automobiles, electronic control components can be connected into a local area network through the CAN protocol for information transmission. The in-car entertainment system plays an important role in interacting with users among these electronic components. In order to meet the users’ ecological needs and provide a friendly interface operation experience, the Android system has been introduced into the in-car entertainment system. This study mainly explores the implementation of accessing the CAN network through Android applications using the Model-View-Controller (MVC), Model-View-Presenter (MVP), and Model-View-View Model (MVVM) design patterns, and compares these 3 design patterns to analyze their advantages and disadvantages in accessing the CAN network. Ultimately, it concludes that the MVVM design pattern is more suitable for the application of accessing the CAN network in the In-Vehicle Infotainment system.

Android application  /  Design mode  /  MVC  /  MVP  /  MVVM
黄慧, 李荆轩. 车载CAN通信Android应用的设计模式研究与应用. 汽车文摘, 2024 , (1) : 1 -7 . DOI: 10.19822/j.cnki.1671-6329.20220166
Hui Huang, Jingxuan Li. Research and Application on Design Modes for Android Application on Vehicle[J]. Automotive Digest, 2024 , (1) : 1 -7 . DOI: 10.19822/j.cnki.1671-6329.20220166
缩略语
CAN Controller Area Network
ECU Electronic Control Unit
UI User Interface
MVC Model-View-Controller
MVP Model-View-Presenter
MVVM Model-View-View Model
车载娱乐系统中的操作系统主要包括WinCE、QNX、Linux、Android、鸿蒙OS和阿里OS。由于汽车制造企业在定制方面的需求日益增多,Android系统因其生态化、灵活性和受用户欢迎的优点,在市场上占据越来越大的份额。随着搭载Android系统的车载娱乐系统增多,对Android应用程序访问整车电子控制器件的需求也越来越多。车载娱乐系统的Android应用程序需要能够正确地发送控制指令给整车电子器件,并将其状态反馈到界面上,因此需要研究一种高效的设计模式来实现这一目标。因此,本文对车载娱乐系统中Android应用程序的设计模式进行了研究。
车载娱乐系统中使用Android应用程序访问CAN网络与Android终端应用程序访问HTTP网络有所不同。车载应用程序的主要功能特点在于管理涉及控制器局域网络的业务逻辑和用户界面。与Android终端应用程序相比,车载应用程序发送和接收CAN网络报文具有以下不同之处:
(1)请求CAN网络得到反馈所需的时间比请求HTTP网络更长,这是因为请求CAN网络需要考虑对方电子控制单元(Electronic Control Unit,ECU)计算的时间。
(2)CAN网络会定时反馈对方ECU的状态。
(3)如果对方ECU存在非预期错误,将会通过CAN网络反馈无效值或保留值。
本文研究了适用于车载应用的CAN网络应用程序设计模式和方法,并探讨了适用于车载应用的HTTP网络应用程序设计模式和方法。本文以Java作为Android系统的上层开发语言,并使用Java代码作为示例。
模型-视图-控制器(Model-View-Controller,MVC)是一种常用的设计模式,用于组织和管理软件应用程序中的交互和数据流。MVC设计模式,如图1所示[4]
Model代表数据模型,负责保存和管理数据。当数据发生变化时,Model负责通知View更新界面显示。
View代表用户界面,接收用户的请求并将其传递给Controller。View主要负责与用户进行交互和展示数据。
Controller是控制器,负责处理业务逻辑。当Controller对业务进行处理后,会通知Model进行数据更新。
(1)模块职责划分明确。主要划分为Model、View和Controller模块,有利于代码维护。
(2)这种设计模式使得数据、界面和业务逻辑之间的耦合度降低,提高了代码的可维护性和可扩展性。
(1)在Android开发中,通常将Activity组件作为控制器(Controller)角色来执行。然而,在实际业务应用中,Activity也会控制一些涉及业务逻辑刷新的用户界面(User Interface,UI)元素,例如进度条等。这就导致部分View和Controller的功能合并在同一个类别中,使得Activity的代码逐渐膨胀。这种情况下,View和Controller之间存在耦合,不符合模型设计的初衷,给维护带来了困难。
(2)此外,View和Model之间也存在一定的交互逻辑,并没有完全分离开来,导致View和Model之间也存在耦合。
(3)上述设计还仅仅实现了在车载应用中给对方ECU发送指令,并默认对方ECU能成功执行并刷新界面。但实际上,对方ECU并不一定能成功执行该指令,并且从CAN网络接收到反馈的时间也相对较长。因此,在Controller中需要额外设计,以便在对方ECU执行失败或用户频繁发送指令导致对方ECU不断返回反馈的情况下,能正确通知Model并相应地更新View。这使原本已经庞大的Controller复杂度和大小进一步增加。
(1)MVC不适合用于处理与CAN网络相关的业务和UI逻辑。
(2)MVC可以应用于简单的数据界面控制逻辑。
(1)Model层
通过抽象出符合业务逻辑的Model层,可以实现数据的保存和处理,并在处理完成后通知UI层更新显示内容。
Model实现程序如下:
public class ACModel {
private intmTemperature = 0;
public void upTemperature(ControllerActivity activity) {
//更新数据
mTemperature = ++mTemperature;
//发送CAN控制指令
CANManager.getInstance().setACTemperature(mTemperature);
//更新UI
activity.upTemperature(mTemperature + "");
}
}(2)View层
在Android应用中,View层作为用户界面,通常指的是Activity的xml布局文件。这些布局文件定义了用户界面的组件和布局结构,包括各种UI元素,如按钮、文本框和图像等。通过使用这些xml布局文件,可以创建出具有交互性和可视化效果的用户界面。View实现程序如下:
activity_controller.xml :
<?xmlversion="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android=" http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/show_temperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColorHint="@color/colorPrimaryDark"
android:text="temperature"
android:layout_centerInParent="true"/>
<Button
android:id="@+id/temperature_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="up"
android:layout_below="@+id/show_temperature"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"/>
</RelativeLayout>
(3)Controller层
Controller层即创建Activity,Controller层起到了连接View层和Model层的作用,负责协调界面与数据之间的交互。通过处理View层传递过来的事件,Controller层可以响应用户的操作,并将必要的数据处理任务交给Model层来完成。这样可以实现界面和数据的分离,同时提高代码的可维护性和复用性。
Controller实现程序如下:
public class ControllerActivity extends Activity {
private TextViewmShowTemp;
private Button mUpTemp;
private ACModelmACModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_controller);
mShowTemp = findViewById(R.id.show_temperature);
mUpTemp = findViewById(R.id.up_temperature);
mACModel = new ACModel();
//接收View的事件
mUpTemp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//通知Model层处理数据
mACModel.upTemperature(ControllerActivity.this);
} });
} public void upTemperature(String mTemp) {
mShowTemp.setText(mTemp + "");
}
}2 MVP设计模式
模型-视图-表示器(Model-View-Presenter,MVP)设计模式逻辑如图2所示。
Model作为模型层,负责数据的加载、存储和处理,其角色和作用与MVC中的Model层是相同的。
View作为视图层,负责展示界面的数据并与用户进行交互。它接收用户的请求,并将请求传递给Presenter进行处理。View的角色和作用与MVC中的View层是相对应的。
Presenter负责逻辑业务的处理,接收来自View的用户请求,并在需要的情况下修改Model,然后通知View进行界面的更新显示。与MVC中的Controller相比,Presenter的角色和职责有所区别。在MVP架构中,Presenter负责处理业务逻辑,并起到连接View和Model的桥梁作用。
(1)View和Model的分离
在MVP架构中,View负责处理用户界面的展示和用户输入的响应,而Model负责处理数据的获取和处理。二者之间的分离使得修改视图不会对模型造成影响,也使得View可以进行组件化,提高了代码的可维护性和可重用性。
(2)Presenter的复用和任务细分
Presenter负责处理业务逻辑和交互逻辑,所有的交互都发生在Presenter中。通过将复杂的任务分解成细小的任务,提高代码的可读性和可维护性。而且一个Presenter可以被多个View共享,实现了Presenter的复用,减少了代码的冗余。
(3)接口化的交互
Presenter通过接口和View进行交互,通过定义接口来规范交互方式,有利于测试和维护。通过接口的使用,可以实现模块之间的解耦,方便进行单元测试和模块替换。
(4)通用Presenter和HTTP请求
由于Model和Presenter的设计模式,可以定义多种通用的Presenter,用于处理不同的业务逻辑和请求。比如可以定义通用的Presenter用于处理HTTP网络请求,并通过即时的HTTP反馈进行界面设置,提高用户体验。这也是MVP架构的灵活性之一。
(1)接口维护成本增加
在页面逻辑复杂的情况下,随着功能的增加,对应的Presenter和View的接口也会增多。这可能增加了代码的复杂性和维护成本。可以考虑根据实际情况对接口进行合理的设计和划分,避免接口过于庞大和冗余。
(2)状态保存与恢复
在Android中,一般使用OnSaveInstanceState和OnRestoreInstanceState来保存和恢复Activity的状态。然而,在MVP设计模式中,View不应该直接操作Model,这可能导致状态的保存和恢复变得不合理,并增加了Model和View之间的耦合性。可以考虑使用其他方式来实现状态的保存和恢复,如使用View Model层来管理状态。
(3)UI更改导致Presenter接口变更
当UI发生更改时,可能需要对Presenter中的一些接口进行修改,存在一定的耦合。这是因为Presenter负责处理业务逻辑和更新UI。可以考虑使用抽象和接口来降低耦合性,并且尽量将UI变更的影响范围控制在最小范围内。
(1)MVP不适合应用于处理CAN网络相关的业务及UI逻辑。
(2)MVP适合应用于处理HTTP网络相关的业务及UI逻辑。
(1)Model层
Model层负责处理数据的获取、存储和处理,可以包含数据库操作、网络请求、文件读写等逻辑,并且Model只与Presenter发生交互。
Model实现程序如下:
public class ACModel {
private intmTemperature = 0;
public void up(ACModelCallback callback) {
callback.onSuccess(++mTemperature);//通知Presenter结果
} public interface ACModelCallback {//数据回调接口
void onSuccess(intmTemperature);
void onFailed(String text);
}
}(2)View层
View层xml布局文件和MVC中View层的xml布局文件是相同的。
View实现程序如下:
public interface IView {
void upTemperature(String text);
}
Activity达到接收到View的事件,通过实现View的接口[13],通过持有Presenter的引用,将View和Presenter进行联系。
View实现程序如下:
public class PresenterActivity extends Activity implements Interface.IView {
private TextViewmShowTemp;
private Button mUpTemp;
private Interface.IPresentmPresent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_controller);
mShowTemp = findViewById(R.id.show_temperature);
mUpTemp = findViewById(R.id.up_temperature);
mPresent= new UpTemperaturePresenter(this);
mUpTemp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mPresent.up();
} });
} public void upTemperature(String mTemp) {
mShowTemp.setText(mTemp + "");
}
}(3)Presenter层
Presenter负责处理业务逻辑,通过IPresenter接口实现View调用,它可以定义一系列的方法,用于接收View层的事件和数据请求,并根据业务逻辑进行处理,以实现两者之间的交互。
Presenter实现程序如下:
public interface IPresent {
void up();
}public class UpTemperaturePresenter implements ACModel.ACModelCallback, Interface.IPresent {
private ACModelmACModel;
private Interface.IViewmView;
public UpTemperaturePresenter(Interface.IView view) {
mView = view;
mACModel = new ACModel();
} @Override
public void onSuccess(intmTemperature) {
mView.upTemperature(mTemperature + "");
} @Override
public void onFailed(String text) {
mView.upTemperature("失败");
} @Override
public void up() {
mACModel.up(this);
}3 MVVM设计模式
模型-视图-视图模型(Model-View-View Model,MVVM)如图3所示[3,14]
MVVM模式可以理解为对MVC模式的改进和优化。在MVVM模式中,Model负责处理数据的加载和存储,与MVC模式中的Model层设计策略相同。当Model数据更新后,它会将新数据传递给View Model。
View是视图层,负责展示界面数据并与用户进行交互,与View Model之间存在双向交互关系。View层通过绑定View Model来实现,当ViewModel的数据改变时,View会自动更新相应的UI,反之亦然。
View Model是视图模型,负责完成View与Model的交互,处理业务逻辑,并通知Model进行更新操作。
(1)View Model和View的耦合度相比MVP模式更低。View Model负责处理和提供数据,UI的变化无需特殊处理,只需通过数据绑定实现。这样做,只需关注数据处理,UI处理也就自然完成了。
(2)View Model中只包含数据和业务逻辑,方便进行单元测试。
(3)由于车机CAN网络的消息经常发生并且不需要向对应的ECU发送请求,同时也会有来自对应ECU的反馈消息。因此,MVVM模式适合用于IVI车机端对CAN网络的请求,实现通过数据驱动UI的修改。
尽管使用Data Binding机制时,View层的Data Binding需要按规范实现,否则可能导致View布局问题以及与Activity中代码相关的问题,并且可能不利于调试,需要一定的开发经验。但是,由于MVVM模式能很好地适用于处理与CAN网络相关的复杂业务和UI逻辑,因此,在基于Android系统的车机应用中访问CAN网络时,MVVM是一种较为理想的设计模式。
(1)Model层
Model层在MVC、MVP和MVVM设计模式中都是负责数据的加载和处理。在这些设计模式中,Model层的职责是从数据源获取数据,并进行数据的处理和逻辑操作。
Model实现程序如下:
public class ACModel {
private intmTemperature = 0;
public void up(ACModelCallback callback) {
callback.onSuccess(++mTemperature);
public interface ACModelCallback {//数据回调接
void onSuccess(intmTemperature);
void onFailed(String text);
}
}(2)View层
此布局与其它设计模式中的view层的不同之处在于,增加了Data Binding。在使用Data Binding的情况下,布局文件中的视图和数据源可以直接进行绑定,使得数据更新和显示更加自动化和简洁。通过在布局文件中使用特定的语法和属性,可以将数据源与对应的视图进行关联,当数据源发生变化时,视图会自动更新。
View实现程序如下:
<?xml version="1.0" encoding="utf-8"?>
<data>
<variable
name="atcViewModel"
type="com.faw.mvvm.AtcViewModel"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/show_temperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="temperature"
android:text="@{atcViewModel.temperature}"
android:layout_centerInParent="true"/>
<Button
android:id="@+id/up_temperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/show_temperature"
android:onClick="@{(v) ->atcViewModel.onClickUp(v)}"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:text="up"/>
</RelativeLayout>
</layout>
MVVM Activity作用为将View和View Model进行绑定。
MVVM实现程序如下:
public class MvvmActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AtcViewModelatcViewModel = new AtcViewModel();
ActivityMvvmBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_mvvm);
//View与ViewModel绑定
binding.setAtcViewModel(atcViewModel);
}
}(3)View Model层
View Model属于连接视图层和模型层的中间件,能够观察到绑定的数据的变化,并对视图内容做对应的更新,能够监听视图的变化,且通知数据发生改变。
View Model实现程序如下:
public class AtcViewModel extends BaseObservable {
private String temperature;
private final ACModelmACModel;
public AtcViewModel() {
mACModel = new ACModel();
} @Bindable
public String getTemperature() {
return temperature;
} @Bindable
public void setTemperature(String temp) {
this.temperature = temp;
notifyChange();
} public void onClickUp(View view) {//点击事件处理
mACModel.up(new ACModel.ACModelCallback() {
@Override
public void onSuccess(int temp) {
setTemperature(temp + "");
} @Override
public void onFailed(String text) {
setTemperature(text);
} });
}
}
在此项研究中,对MVC、MVP、MVVM这3种车载Android应用设计模式进行了逻辑分析,并对其优缺点进行了比较。最后,总结了在车载终端应用中的实现步骤和结果。然而,结合实际业务的实现中,还需要进行更多的设计工作来进行优化和细化。
Android车载应用提供了强大的开发工具,能够优化用户交互,并推动了车辆智能化发展。随着技术逐渐进步,更多交互、更好体验的Android应用将会在车载终端应用。
参考文献 引证文献
排序方式:
[1]
马鑫. 基于Android车载娱乐系统的iPod功能实现[D]. 南京: 东南大学, 2013: 3.
[2]
唐朝霞. 基于Web的高校院(系)资料室个性化信息服务体系研究[J]. 湖南科技学院学报, 2008, 29(8): 3-4.
[3]
锁玺. 基于REST的基层社区健康平台的设计与实现[D]. 西安: 西安电子科技大学, 2015.
[4]
张志强, 刘巧玲. 基于J2EE的软件虚拟实训系统的MVC架构实现[J]. 中州大学学报, 2009, 26(1): 4-5.
[5]
王一锋. 基于Ruby on Rails和Flex3的RIA研究与应用[D]. 贵阳: 贵州大学, 2009.
[6]
周康毅. 基于安卓平台的教学助手系统的设计与实现[D]. 武汉: 华中师范大学, 2018.
[7]
张沈梅, 孙昊, 王玲, 等. 基于微信小程序的课程在线测试系统[J]. 电脑知识与技术: 学术版, 2018(11Z): 4-5.
[8]
潘昊. 基于MVP模式的用户界面层的研究与实现[D]. 南京: 东南大学, 2012.
[9]
崔绍龙, 彭玲, 李森, 等. 室内外一体化的消防设施巡检系统构建[J]. 消防科学与技术, 2017, 36(9): 2-3.
[10]
汪润泽. 车间刀具全生命周期管理系统设计与实现[D]. 武汉: 华中科技大学, 2015.
[11]
王汉肖. 手机购物方案生成系统的设计与实现[D]. 济南: 山东大学, 2015.
2024年第卷第1期
PDF下载
202
79
引用本文
BibTeX
文章信息
doi: 10.19822/j.cnki.1671-6329.20220166
  • 首发时间:2025-11-25
  • 出版时间:2024-01-05
补充材料
相关文章
文章信息
作者
出版历史
基金
作者信息
    1 中国第一汽车股份有限公司研发总院, 长春 130013
    2 一汽大众汽车有限公司, 长春 130011
参考文献
分享链接
https://castjournals.cast.org.cn/joweb/qcwz/CN/10.19822/j.cnki.1671-6329.20220166
分享至
全文二维码

扫描看全文

引用本文
BibTeX
本文的引用情况
2种不同金属材料的力学参数

Family
属数
Number of
genus
种数
Number of
species
占总种数比例
Percentage of
total species (%)

Genus
种数
Number of
species
占总种数比例
Percentage of total
species (%)
鹅膏菌科Amanitaceae 2 11 5.26 鹅膏菌属 Amanita 10 4.78
小菇科 Mycenaceae 2 12 5.74 丝盖伞属 Inocybe 5 2.39
多孔菌科 Polyporaceae 8 14 6.70 蜡蘑属 Laccaria 5 2.39
红菇科 Russulaceae 3 23 11.00 小皮伞属 Marasmius 6 2.87
小菇属 Mycena 11 5.26
光柄菇属 Pluteus 5 2.39
红菇属 Russula 17 8.13
栓菌属 Trametes 5 2.39
关闭全屏