在写第一个Android-App时必须知道的6件事

在写第一个AndroidApp时必须知道的6件事我的第一个app是糟糕的。实际上,它太糟糕了,所以我把它从商店中移除,我甚至不再因我把它列在我的简历之中而烦恼。如果我在写它之前,知道一些有关Android开发的事,那个app就不会那么糟糕。当你写你的第一个Androidapp时,这有一个列表你需要记着。这些经验教训是我在写第一个app源码时,犯下的真实的错误。我将会在后面展示这些错误。记住这些事情能帮助你写一个让你感到有点自豪的app。当然,如果你作为一个Android开发的学生正在做正确的工作,无论如何,不久后你都有可能恨你写的app,正如@codestandards所说,如果你一年前码的代码并不能让你感觉到不适,那你有可能没怎么学习。如果你是一个有经验的Java开发者,第1,2和第5条可能并不能让你感兴趣。另外的第3,4条可能展示你一些很酷的但你可能还不知道的东西。对Contexts不要有静态引用1.publicclassMainActivityextendsLocationManagingActivityimplementsActionBar.OnNavigationListener,2.GooglePlayServicesClient.ConnectionCallbacks,3.GooglePlayServicesClient.OnConnectionFailedListener{4.5.//...6.7.privatestaticMeTrackerStoremMeTrackerStore;8.9.//...10.11.@Override12.protectedvoidonCreate(BundlesavedInstanceState){13.//...14.15.mMeTrackerStore=newMeTrackerStore(this);16.}17.}这可能看起来对任何人来说,都是一个不可能犯的错误。但并非这样,我就犯过。我也看到其他人犯过这样的错误,并且我也看到很多人并不能在第一时间指出为什么这是一个错误。不要这样做。它是一个noobmove如果当这个Activity传递到它的构造函数里,MeTrackerStore持有这个Activity的引用,那这个Activity将仍然不会被回收(除非这个静态变量被重新赋值给另一个Activity)。这是因为mMeTrackerStore是静态的,静态变量的内存是不会被回收的,直到程序里正在运行的进程停止。如果你发现自己尝试这么做,那么你的代码可能有一些严重的错误。寻找帮助的话,可以看看Google’sUdacity里的课程“AndroidDevelopmentforBeginners”注意:技术上讲,你可以hold一个对Context的静态引用,但不会引起内存泄漏,但我不会推荐你这么做。当心对那些你无法控制它的生命周期的对象进行隐式引用1.publicclassDefineGeofenceFragmentextendsFragment{2.publicclassGetLatAndLongAndUpdateMapCameraAsyncTaskextendsAsyncTask<String,Void,LatLng>{3.4.@Override5.protectedLatLngdoInBackground(String...params){6.//...7.try{8.//Herewemakethehttprequestfortheplacesearchsuggestions9.httpResponse=httpClient.execute(httpPost);10.HttpEntityentity=httpResponse.getEntity();11.inputStream=entity.getContent();12.//..13.}14.}15.}16.17.18.}这段代码有很多问题,但我将关注其中的一个。在Java中,非静态的内部类对包含它的类对象有一个隐式的引用。在这个例子中,任何GetLatAndLongAndUpdateMapCameraAsyncTask对象都将有个DefineGeofenceFragment对象的引用。匿名类也是如此:它会对包含它的类对象有个隐式的引用。这个GetLatAndLongAndUpdateMapCameraAsyncTask对象对Fragment对象有个隐式的的引用,一个我们无法控制它生命周期的对象。AndroidSDK负责适当的创建和销毁Fragment对象,如果因为GetLatAndLongAndUpdateMapCameraAsyncTask对象正在执行所以不能被回收的话,那它持有对象也无法被回收。这里有一个很棒的GoogleIO视频解释为什么这种事会发生让AndroidStudio为你工作1.publicViewPagergetmViewPager(){2.returnmViewPager;3.}这个片段是我使用”GenerateGetter”代码补全时,AndroidStudio为我生成的,这个getter方法对这个实例变量保持了’m’前缀。这并不理想。(另外,你一定想知道为毛实例变量神明的时候要带个’m’前缀:这个’m’常常被约定作为实例变量的前缀。它代表了’member’。)不论你是否认为’m’作为你实例变量的前缀是一个好主意,这里有一个经验:AndroidStudio可以帮你按照你养成的习惯去编写代码。比如说,你可以使用AndroidStudio中的代码风格框去让An...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?