2019年8月19日--applicationId实际意义、singleInstance应用场景

1. applicationId和package name关系

  场景:发现应用的包名和applicationid是不一样的,特此记录。

    applicationId:applicationId在Android系统中是作为应用的唯一标识,即在一个Android设备中所有的应用程序的applicationId都是唯一的。这意味着,一旦你已发布的程序使用了这个applicationId,你就无法再修改它。如果修改了,那么这个应用程序就会被系统当作是一个全新的应用程序,和你之前的应用程序是相互独立的。

    package name:在android studio中理解为一个查询类的路径,eclipse中package name就是applicationID。在很多第三方SDK中,得到的数据要去填的包名其实就是这个applicationID

2.meta-data

    场景:在使用google ads的时候发现需要配置meta-data。

    解析: 元数据是用来描述数据的数据(Data that describes other data)。比如说高矮胖瘦都是对一个人的描述,那么我们可以直接用外貌来描述这些词。即,外貌可以概括高矮胖瘦,可知外貌是高矮胖瘦的元数据。

      meta-data和strings的区别在于它们的作用域,strings只能在应用本地被读取,而处于AndroidManifests.xml下的meta-data则是对外界开放的,是向系统注册的信息,系统及外界是可以通过PackageInfo相关API获取到meta-data的信息的,二者关系可以形象一点看待是私有和公有的关系。

    meta-data我们拿到的时候是一个Bundle

获取方式

在manifest中添加

meta-data配置

获取

值获取

3.属性动画


     3.1 用by和不用by的区别

    不用by,基于原位置移动。用by,基于当前位置移动

    如 translationX(-200f)  沿X轴左移动200,然后我们在执行一条 translationX(200f),那么它会以原点为基础右移200,实际距离是移动了400。


图解

    3.2 指定view中心点

4.启动模式为singleInstance的activity,在下次启动的时候会不会在重新在新栈中创建。

场景:某一个activity A的启动模式是singleInstance,当再启动一个新activity B的时候,A并不可见,但是下次启动A的时候,发现复用了上次Activity的数据。 这种启动模式虽然了解过,但是实际是第一次用,继续了解ing。

通过打印静态变量i的值,发现的确是复用了上一次的值。可是singleinstance不是每次都开启一个新栈吗??

解析:singleInstance(全局单例模式)该模式具备singleTask模式的所有特性外,与它的区别就是,这种模式下的Activity会单独占用一个Task栈,具有全局唯一性,即整个系统中就这么一个实例,由于栈内复用的特性,后续的请求均不会创建新的Activity实例,除非这个特殊的任务栈被销毁了。以singleInstance模式启动的Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。

代码--mainActivity
代码--twoactivity

5.并发(concurrency)和并行(parallellism)是:

解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

解释三:并行是在一台处理器上“同时”处理多个任务,并发是在多台处理器上同时处理多个任务。

如 hadoop 分布式集群。所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

你可能感兴趣的:(2019年8月19日--applicationId实际意义、singleInstance应用场景)