当前位置: 首页 > 科技观察

在构建你的第一个应用程序之前你需要知道的六件事

时间:2023-03-22 00:41:19 科技观察

我的第一个应用程序很糟糕。事实上,它太糟糕了,我把它从应用程序商店中删除了,我什至没有在我的简历中列出它。如果我在开发它之前了解一些关于Android开发的知识,那就不会这么糟糕了。开发您的第一个Android应用程序时要记住的事情列表。我接下来要展示的这些实际错误来自我的第一个应用程序代码。牢记这些错误可以帮助您构建引以为豪的应用程序。当然,正如codestandards所说:“如果您正在做的事情类似于您作为学生开发的Android应用程序,那么您很可能会讨厌您的应用程序”。如果你一年前写的代码对你来说还不错,那说明你学的还不够。-代码标准2015.5.21如果您是一位经验丰富的Java开发人员,第1、2和5项可能不会吸引您。另一方面,即使您从未犯过这些示例中的错误,第3项和第4项可能会向您展示一些很酷的东西,您可以使用您可能不了解AndroidStudio的软件来实现这些东西。1.不要持有上下文的静态引用publicclassMainActivityextendsLocationManagingActivityimplementsActionBar.OnNavigationListener,GooglePlayServicesClient.ConnectionCallbacks,GooglePlayServicesClient.OnConnectionFailedListener{//...privatestaticMeTrackerStoremMeTrackerStore;//...@OverrideprotectedvoidonCreate(BundlesavedStoremMenewTracker){//...;}}这似乎是每个人都不可能犯的错误。这不是,我犯了这个错误。我见过其他人犯过这个错误,我采访过一些人,他们并没有很快指出为什么这是一个错误。不要这样做,它会改变。如果MeTrackerStore通过其构造函数保留对Activity的引用,则Activity将不会被垃圾回收(GC)。(除非静态变量被重新分配给不同的活动)。这是因为mMeTrackerStore是一个静态变量,静态变量的内存直到应用程序退出才会被回收。如果您正在尝试做这样的事情,那么您的代码很可能存在严重错误。寻求帮助,也许可以查看Google的Udacity课程“Android初学者开发”来帮助您。注意:从技术上讲,您可以对应用程序上下文进行静态变量引用而不会导致内存泄漏,但我不建议您这样做。2.注意生命周期你无法控制的对象的隐式引用(httpPost);HttpEntityentity=httpResponse.getEntity();inputStream=entity.getContent();//..}}}}这段代码有很多问题,我将只关注问题上的“隐式引用”。在Java中,(非静态)内部类隐式引用外部类的实例。在此示例中,任何GetLatAndLongAndUpdateCameraAsyncTask都具有对外部类DefineGeofenceFragment的引用。匿名类也是如此,它们也有一个对包含它们的类的实例的隐式引用。GetLatAndLongAndUpdateCameraAsyncTask隐式引用了我们无法控制其生命周期的Fragment对象。AndroidSDK负责创建和销毁Fragment,如果GetLatAndLongAndUpdateCameraAsyncTask因为正在运行而无法被垃圾回收,那么DefineGeofenceFragment也会因为它具有隐式引用而无法被垃圾回收。这是一个很棒的谷歌视频,解释了为什么会这样。3.使用AndroidStudio此代码是在AndroidStudio中使用“GenerateGetter”生成的。这些getter维护着'm'个前缀的实例变量,通过它一个方法能产生同样的效果不再是天方夜谭。(如果您想知道为什么“m”是实例变量名称的第一个字母,“m”通常是实例变量的公认约定。它代表“成员”)。无论您是否认为在实例变量前加上“m”前缀是个好主意,有了这些知识,AndroidStudio就可以帮助您为想要实现的任何内容编写可接受的约定。例如,当您为实例变量生成getter、setter和connstructor参数时,您可以使用AndroidStudio代码样式对话框中的设置让AndroidStudio自动在您的实例变量前添加“m”并删除“m”。AndroidStudio可以做的远不止于此。学习AndroidStudio是从学习快捷键和模板开始的。4.一个函数只做一件事。我写的很多类中有一个方法。我写了100多行。这样的方法很难阅读、修改和重用。努力让一个方法只做一件事。显然,这意味着您应该对超过20行的方法持怀疑态度。在这里,您可以使用AndroidStudio帮助您找到有问题的方法:5.向聪明和有经验的人学习这听起来可能微不足道,但这是我在开发第一个应用程序时犯的错误。当您开发应用程序时,您会犯其他人已经犯过的错误。通过向他人学习,您可以避免重蹈他人的覆辙,从而节省自己的时间。我在我的第一个应用程序中浪费了很多时间,犯了错误,如果我花时间向有经验的软件开发人员学习,这些错误是可以避免的。阅读PragmaticProgrammer,然后阅读EffectiveJava。这两本书将帮助您避免新开发人员犯的常见错误。在你学习了这两本书之后,继续寻找聪明人并向他们学习。6.使用类库在开发应用程序时,您可能会遇到聪明而有经验的人已经解决的问题。此外,许多这些问题的解决方案都可以作为开源库使用,请利用它们。在我的第一个应用程序中,我编写了一些库已经提供的功能代码。有的是java标准库,有的是第三方库,比如Retrofit、Picasso。如果您不确定您使用的是哪个库,您可以做3件事:收听GoogleIOFragmented广播。同时,询问这些开发人员哪些第三方库对Android很重要。订阅AndroidWeekly。这里有一部分最新的类库,随时关注哪些对你有用。寻找能够解决与您在开发应用程序时遇到的问题类似的问题的开源应用程序。您可能会发现某个应用程序使用了您想要的第三方库,或者您可能会发现您不知道的Java库。结论开发好的Android应用程序非常困难。不要因为犯了过去的错误而让自己难堪。如果您在我编写的代码中发现错误,请在评论中告诉我。(误导性评论比没有评论更糟糕)。如果您认为本文对新手开发者有用,请分享。解决他们的一些头痛问题。