活动本质上是应用程序的文件/页面吗?

时间:2019-06-20 01:00:37

标签: android

在确定是否应该创建活动时应该以这种方式查看吗?

3 个答案:

答案 0 :(得分:0)

与应用(或任何程序)进行比较的书太窄了。最好将应用程序与冰山进行比较。

冰山一角(可见部分)是活动,简单地说就是眼睛可以看到的东西。

冰山的底部(位于水中的部分)是底层代码,后台线程(进程,例如线程,服务...),简而言之,用户所不具备的东西不知道。

答案 1 :(得分:0)

这是许多Android开发人员提出和讨论的问题,并且观点在过去几年中不断发展,但您仍然会根据所问的对象获得主观的回应。活动 可能就是这样开始的-作为封装构成较大任务一部分的特定页面的一种方式-因此它们的模型为堆栈。

更“现代”的观点,这是Google Android开发者的观点,是将单个(或多个)Activity视为对系统事件的钩子,并作为实现一组Fragment的容器实际页面。这种提醒使我想起了如何构建单页Web应用程序。您可以在此处了解更多信息:

https://developer.android.com/guide/navigation/ https://developer.android.com/guide/navigation/navigation-principles

如果您正在寻找一个初步的观点,那是一个很好的起点,您可以从那里发展自己的观点。

我倾向于有中间立场。我倾向于将我的应用程序分为功能部分(例如设置向导,用户管理,主页等),并且每个应用程序通常都有一个“活动”,其中包含一个或多个代表页面的片段

答案 2 :(得分:-1)

当然!您的应用程序中没有活动的义务,因为您可以拥有仅包含服务的应用程序。 ...除非您愿意,否则无需进入AIDL。

问题是,如何使应用程序运行。使用活动创建应用程序时,可以在清单中添加一个Intent过滤器,以使活动可从启动器启动。如果没有活动,则必须找到另一种方式来启动它。

这很容易做到。只需从其他程序中激发一个意图,就像这样:

startService(new Intent("my.service.intent"));

...在其中注册了清单的服务,如下所示:

    <service android:name=".SomeService" >
      <intent-filter>
        <action android:name="my.service.intent"/>
      </intent-filter>

如果您确实需要在应用程序和服务之间使用复杂的API,那么startServicebroadcastIntent当然有点笨拙。如果您需要更丰富的东西,则需要研究AIDL和绑定服务。