Android面向对象编程

2024-04-16

我正在使用 Eclipse 在 Android 中进行一些基本编程。我目前正在翻阅一本书并使用书中编写的一些示例代码。

我注意到,在这本书中,迄今为止的所有示例都在主要活动中进行。我不认为这是很好的面向对象编程实践,因为我来自传统的 Java 背景。

这是移动平台的常见做法吗?类不应该都包含在自己的文件中吗?


类不应该都包含在自己的文件中吗?

不一定是 Android 系统Activity是一个“特殊情况”类。如果您还没有完成,我建议您阅读应用基础知识 http://developer.android.com/guide/topics/fundamentals.html特别是“活动”部分应用组件 http://developer.android.com/guide/topics/fundamentals.html#Components...

活动代表具有用户界面的单个屏幕。例如,电子邮件应用程序可能有一个显示新电子邮件列表的活动,另一个用于撰写电子邮件的活动,以及另一个用于阅读电子邮件的活动。尽管这些活动共同在电子邮件应用程序中形成一致的用户体验,但每个活动都是独立于其他活动的。因此,不同的应用程序可以启动这些活动中的任何一项(如果电子邮件应用程序允许)。例如,相机应用程序可以启动电子邮件应用程序中撰写新邮件的活动,以便用户共享图片。

请注意我以粗体突出显示的文本部分。重点是,一个Activity其本身并不是完整的应用程序,如果允许,任何第三方应用程序都可以调用Activity在您的某个应用程序中。因此,通常会制作一个Activity尽可能独立。一个特殊的例子是使用类似异步任务 http://developer.android.com/reference/android/os/AsyncTask.html它提供了执行后台线程以及操作 UI 的方法 - 嵌套一个扩展的私有类AsyncTask很常见并且简化了代码。扩展的嵌套类广播接收器 http://developer.android.com/reference/android/content/BroadcastReceiver.html出于同样的原因也很常见。

也就是说,为 POJO 帮助程序类使用单独的 Java 类文件并没有什么问题,例如,它只是取决于您的应用程序的复杂程度,但这可能意味着要特别考虑某些 Android 类的工作方式 -AsyncTask类尤其是在单独的类文件中定义的类,尝试一下,您就会明白我的意思。 :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android面向对象编程 的相关文章

随机推荐

  • MainWindow 对象没有属性“connect”

    我想知道是否有人可以帮助我解决有关 PyQt5 中插槽连接的问题 下面的代码片段将告诉你我的问题是什么 class MainWindow QMainWindow def init self super MainWindow self ini
  • 从 DialogFragment 设置状态栏颜色

    我正在创建一个动态更改状态栏颜色的应用程序 当从任何片段调用时 我在主 Activity 类中的方法都可以正常工作 片段放置在 Activity pager 中 public void setStatusBarColorIfPossible
  • 正在发生 mongoDB 写入,然后读取必须等待或不等待

    当 mongoDB 写入发生时 读取必须等待或不等待 当 mongoDB 要在 mongodb 中写入一些文档时 会发生写锁并且 其他线程尝试读取其他文档 那么它应该等待直到写锁释放或不释放 所有读锁和写锁之间是否存在依赖关系 来自docs
  • boost::Optional 到 bool 的转换

    如何防止该代码的最后一行编译 include
  • 如何从 openssl 生成的密钥生成 X.509 证书

    我有一个在 ec2 实例上运行的 Web 服务器 该实例在内部调用使用 Spring Boot 构建的 REST 服务器 现在 我正在尝试让此 REST 服务器在 SSL 下运行 这是我到目前为止所做的 1 使用此命令创建 CSR 和密钥文
  • 我该如何解决这个错误?字段从未分配并且始终具有空值[重复]

    这个问题在这里已经有答案了 我创建了 4 个 C 脚本 当我运行 2d unity 游戏时 我在控制台中看到此警告 Assets Scripts GameHandler cs 7 34 警告 CS0649 字段 GameHandler ca
  • 使用 spring-data-rest 定义路径“/{resourcename}/search/”的自定义方法

    我很困惑 我无法找到如何将自定义 搜索 方法与在 spring data rest 的帮助下加载的方法一起定义 您能回答我吗 该框架是否具有 开箱即用 的可能性 如果有的话 你能告诉我 在哪里可以找到它吗 为了更深入地了解我的情况 我描述了
  • Meteor.http.call 不允许 Access-Control-Allow-Origin

    当我尝试使用 Meteor 调用外部服务器进行 JSON 查询时Meteor http call GET 方法我收到错误消息 Access Control Allow Origin不允许 如何允许我的 Meteor 应用程序向其他服务器发出
  • Rails:最后以空值排序

    在我的 Rails 应用程序中 我多次遇到一个问题 我想知道其他人是如何解决的 我有某些记录 其中值是可选的 因此某些记录具有值 而某些记录对该列为空 如果我在某些数据库上按该列排序 则空值首先排序 而在某些数据库上 空值最后排序 例如 我
  • 使用假 DbContext 和 Autofixture 以及 Moq 进行测试

    所以请遵循这个例子 example http romiller com 2012 02 14 testing with a fake dbcontext 以及如何制作一个假的 DBContext 来测试我的测试 使用这个工作正常 Test
  • sqlite python 插入

    我以前问过类似的问题 这里是我想要实现的目标的详细解释 我有两个 sqlite 表table1 是标准表 具有服务器 id 状态等字段 table2 具有服务器 id 状态 数字 日志文件等字段 Table2 为空 Table1 有值 我正
  • 获取连接的mysql数据库名称(JDBC)

    如何从连接对象中获取数据库名称 try this ds DataSource new InitialContext lookup java comp env jdbc amger catch NamingException ne Conne
  • 使用 ZXing 和 ZBar 的 GS1 应用程序标识符数据中缺少 AIM 符号标识符

    我正在尝试验证使用 ZXing 或 ZBar 扫描的 GS1 条形码 这GS1 一般规格 http www gs1 org docs gsmp barcodes GS1 General Specifications pdf7 8 中说 GS
  • 验证:如何检查特定错误

    我知道如何检查属性是否有错误 post errors title any 是否可以检查哪个验证失败 例如 唯一性 最近我遇到了一种情况 我需要同样的东西 用户可以从一个表单一次添加 编辑多个记录 由于在验证时并非所有记录都已写入数据库 我无
  • iOS 应用程序因 [UIFeedbackGenerator _autoDeactivate] 崩溃

    我收到了来自 Crashlytics 的以下报告 我没有打电话 UIFeedbackGenerator autoDeactivate 我 也许某个图书馆正在这样做 我做了一些研究 但找不到任何有用的信息 有谁知道这个崩溃报告是什么意思 谢谢
  • 如何保证mongoDb中数据的完整性?

    我正在尝试从关系数据库 mysql 数据迁移到nosql mongoDb 但是我如何确保 mongodb 中的数据完整性 我发现我们无法在服务器端做到这一点 我应该在应用程序端使用什么来处理数据完整性 例如 我有两个表 user 和 tas
  • ActionBarActivity getSupportActionBar().hide() 抛出 NullPointerException

    Call if getSupportActionBar null getSupportActionBar hide 要不就 getActionBar 在 android support v7 app ActionBarActivity 我得
  • RSpec 失败:迁移后找不到表...?

    我有一个带有一个模型的裸轨 3 应用程序 使用生成rails g model User 我添加了一个工厂 使用factory girl rails Factory define user do f f email email protect
  • AngularJS 中的“命名空间”服务

    AngularJS 如何处理服务名称之间的冲突 例如 如果我声明了两个模块 每个模块都包含一个名为 foo 的服务 如果我想创建可重用模块或想避免与其他第三方模块发生冲突 命名空间 服务的好方法是什么 截至目前 AngularJS 不处理服
  • Android面向对象编程

    我正在使用 Eclipse 在 Android 中进行一些基本编程 我目前正在翻阅一本书并使用书中编写的一些示例代码 我注意到 在这本书中 迄今为止的所有示例都在主要活动中进行 我不认为这是很好的面向对象编程实践 因为我来自传统的 Java