GVKun编程网logo

iphone info.plist 各字段含义总结(持续更新,欢迎指点)(苹果infoplist在哪里)

11

本文的目的是介绍iphoneinfo.plist各字段含义总结的详细情况,特别关注持续更新,欢迎指点的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解iphoneinf

本文的目的是介绍iphone info.plist 各字段含义总结的详细情况,特别关注持续更新,欢迎指点的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解iphone info.plist 各字段含义总结的机会,同时也不会遗漏关于Android基础总结(持续更新)、BZOJ 刷题总结(持续更新)、DB2技巧总结(持续更新)、Dom中高big 事件总结(持续更新中)的知识。

本文目录一览:

iphone info.plist 各字段含义总结(持续更新,欢迎指点)(苹果infoplist在哪里)

iphone info.plist 各字段含义总结(持续更新,欢迎指点)(苹果infoplist在哪里)

转自:http://blog.sina.com.cn/s/blog_539ca2cc0100nap6.html

plist文件,Property List 文件,一般都是xml文件格式,用于描述应用软件

主要包括如下:

关键字
类型
是否必须
摘要
CFBundleDevelopmentRegion String No 该束的地区。通常对应于作者的母语。
CFBundledisplayName 本地化的束名。
CFBundleDocumentTypes Array 一组描述了该束所支持的文档类型的字典。
CFBundleExecutable Yes 该束的可执行文件名。
CFBundleGetInfoHTML 用来在Finder的Get Info 面板中显示的更丰富内容的字符串。
CFBundleGetInfoString 用来在Finder的Get Info 面板中显示的字符串。
CFBundleHelpBookFolder 含有该束帮助文件的文件夹名字。
CFBundleHelpBookName 当该束的帮助启动时显示的帮助文件的名字。
CFBundleIconFile 图标文件的文件名。
CFBundleIdentifier 该束的唯一标识字符串。该字符串的格式类似java包的命名方式,例如:com.apple.myapp。
CFBundleInfoDictionaryVersion Info.plist格式的版本信息。
CFBundleName 束的简称。
CFBundlePackageType 用来标识束类型的四个字母长的代码。
CFBundleShortVersionString 面向用户市场的束的版本字符串。
CFBundleSignature 用来标识创建者的四个字母长的代码。
CFBundleURLTypes 一组描述了该束所支持的URL协议的字典。
CFBundLeversion 可执行文件的创建号。

 

CFBundleDevelopmentRegion

CFBundleDevelopmentRegion关键字指定了一个字符串值来标识束的地区。通常对应于作者的母语。如果不能找到用户首选的地区或语言的资源,系统最后会使用该值。

 

CFBundledisplayName

CFBundledisplayName关键字指定了一个字符串值来标识束的显示名称。Finder和其他用户界面组件会把它显示给用户。这个名称可以与文件系统中的束名不同。通过把关键字加入适当的.lproj子目录中的InfoPlist.strings文件,就可以实现该关键字的本地化。如果您需要本地化这个关键字,您还应该提供一个CFBundleName关键字的本地化版本。

有关显示名称的更多信息参见“本地化文件系统名称”

 

CFBundleDocumentTypes

CFBundleDocumentTypes关键字保存了一组字典,它包含了该应用程序所支持的文档类型。每一个字典都被称做类型定义字典,并且包含了用于定义文档类型的关键字。表A-2列出了类型定义字典中支持的关键字。

表 A-2 CFBundleDocumentTypes字典的关键字

关键字
类型
描述
CFBundleTypeExtensions Array 该关键字包含了一组映射到这个类型的文件扩展名。为了打开具有任何扩展名的文档,可以用单个星号“*”。该关键字是必须的。
CFBundleTypeIconFile String 该关键字指定了系统显示该类文档时使用的图标文件名,该图标文件名的扩展名是可选的。如果没有扩展名,系统会根据平台指定一个(例如,Mac OS 9中的.icons)。
CFBundleTypeName 该关键字包含了这种文档类型的抽象名称。通过在适当的InforPlist.strings文件中包含该关键字,可以实现对它的本地化。
CFBundleTypeOSTypes 该关键字包含了一组映射到这个类型的四字母长的类型代码。为了打开所有类型的文档,可以把它设为“****”。该关键字是必须的。
CFBundleTypeRole 该关键字定义了那些与文档类型有关的应用程序的角色。它的值可以是Editer,Viewer,Printer,Shell或None。有关这些值的详细描述可以参见“ 文档的配置”。该关键字是必须的。
NSDocumentClass 该关键字描述了被用来实例化文档的NSDocument子类。仅供Cocoa应用程序使用。
NSExportableAs 该关键字描述了一组可以输出的文档类型。仅供Cocoa应用程序使用。

 

CFBundleExecutable

CFBundleExecutable 标识了束的可执行主文件的名称。对于一个应用程序来说,就是该应用程序的可执行文件。对于一个可加载束,它是一个可以被束动态加载的二进制文件。对于一个框架,它是一个共享库。Project Builder会自动把该关键字加入到合适项目的Info.plist文件中。

对于框架,考虑到启动效率的原因,可执行文件名需要和框架名同名。该可执行文件名不应该包含可用于多种平台的扩展名。

注意

您必须在束的Info.plist文件中包含一个有效的CFBundleExecutable关键字。即使当用户重命名应用程序或束的目录时,Mac OS X也可以使用这个关键字来定位可执行文件和共享库。

 

CFBundleGetInfoHTML

CFBundleGetInfoHTML关键字含有会在束的信息窗口中显示的HTML字符串。如果您希望在信息窗口中有更强的表现力,可以使用这个键值对来替代纯文本的CFBundleGetInfoString。通过把它加入到合适的.lproj目录中的InfoPlist.strings文件中,您也可以本地化该字符串。

如果CFBundleGetInfoString和CFBundleGetInfoHTML同时存在的话,系统会选择使用CFBundleGetInfoHTML。

 

CFBundleGetInfoString

CFBundleGetInfoString关键字含有会在束的信息窗口中显示的纯文本字符串(这里的字符串也就是Mac OS 9中的长字符串)。该关键字的格式应该遵照Mac OS 9中的长字符串,例如:“2.2.1,? Great Software,Inc,1999”。通过把它加入到合适的.lproj目录中的InfoPlist.strings文件中,您也可以本地化该字符串。

如果存在CFBundleGetInfoHTML的话,系统不会选择使用该关键字。

 

CFBundleHelpBookFolder

CFBundleHelpBookFolder关键字含有该束的帮助文件的文件夹名字。帮助通常被本地化成一种指定的语言,所以该关键字指向的文件夹应该是所选择语言的.lproj目录中的文件夹。

 

CFBundleHelpBookName

CFBundleHelpBookName指定了您的应用程序的帮助主页。该关键字指定的帮助页面名可以和HTML文件名不同。在帮助文件Meta标签的CONTENT属性中指定了帮助页面名。

 

CFBundleIconFile

CFBundleIconFile关键字指定了包含该束图标的文件。您给出的文件名不需要包含“.icns”扩展名。Finder会在该束的“Resource”文件夹内寻找图标文件。

如果您的束使用了自定义的图标,那您就必须指定该属性。假如您没有指定,Finder(和其他应用程序)会使用缺省的图标来显示您的束。

 

CFBundleIdentifier

CFBundleIdentifier关键字指定了束的一个唯一的标识字符串。该标识符采用了类似Java包的命名方式,例如com.apple.myapp。该束标识符可以在运行时定位束。预置系统使用这个字符串来唯一地标识每个应用程序。

 

CFBundleInfoDictionaryVersion

CFBundleInfoDictionaryVersion关键字指定了属性列表结构的当前版本号。该关键字的存在使得可以支持Info.plist格式将来的版本。在您建立一个束时,Project Builder会自动产生该关键字。

 

CFBundleName

CFBundleName指定了该束的简称。简称应该小于16个字符并且适合在菜单和“关于”中显示。通过把它加入到适当的.lproj子文件夹下的InfoPlist.strings文件中,该关键字可以被本地化。如果您本地化了该关键字,那您也应该提供一个CFBundledisplayName关键字的本地化版本。

 

CFBundlePackageType

CFBundlePackageType关键字指定了束的类型,类似于Mac OS 9的文件类型代码。该关键字的值包含一个四个字母长的代码。应用程序的代码是‘APPL’;框架的代码是‘FMWK’;可装载束的代码是‘BND’。如果您需要,您也可以为可装载束选择其他特殊的类型代码。

 

CFBundleShortVersionString

CFBundleShortVersionString关键字指定了束的版本号。一般包含该束的主、次版本号。这个字符串的格式通常是“n.n.n”(n表示某个数字)。第一个数字是束的主要版本号,另两个是次要版本号。该关键字的值会被显示在Cocoa应用程序的关于对话框中。

该关键字不同于CFBundLeversion,它指定了一个特殊的创建号。而CFBundleShortVersionString的值描述了一种更加正式的并且不随每一次创建而改变的版本号。

 

CFBundleSignature

CFBundleSignature关键字指定了束的创建者,类似于Mac OS 9中的文件创建者代码。该关键字的值包含四字母长的代码,用来确定每一个束。

 

CFBundleURLTypes

CFBundleURLTypes关键字包含了一组描述了应用程序所支持的URL协议的字典。它的用途类似于CFBundleDocumentTypes的作用,但它描述了URL协议而不是文档类型。每一个字典条目对应一个单独的URL协议。表A-3列出了在每一个字典条目中使用的关键字。

表A-3 CFBundleURLTypes字典的关键字

类型
描述
String 该关键字定义了那些与URL类型有关的应用程序的角色(即该应用程序与某种文档类型的关系)。它的值可以是Editer,Viewer,Printer,Shell或None。有关这些值的详细描述可以参见“ 文档的配置”。该关键字是必须的。
CFBundleURLIconFile 该关键字包含了被用于这种URL类型的图标文件名(不包括扩展名)字符串。
CFBundleURLName 该关键字包含了这种URL类型的抽象名称字符串。为了确保唯一性,建议您使用Java包方式的命名法则。这个名字作为一个关键字也会在InfoPlist.strings文件中出现,用来提供该类型名的可读性版本。
CFBundleURLSchemes Array 该关键字包含了一组可被这种类型处理的URL协议。例如:http,ftp等。

 

CFBundLeversion

CFBundLeversion关键字指定了一个字符串用来标识创建号。该关键字的值通常随每一次创建而改变,并且会被显示在Cocoa"关于"对话框中的扩号里。

为了指定一个发布版的束的版本信息,可以使用CFBundleShortVersionString关键字。参见“CFBundleShortVersionString”

 

应用程序特定的关键字


表A-4列出了仅用于应用程序束的关键字:

表A-4应用程序特定的关键字

关键字
类型
是否必须
摘要
CFAppleHelpAnchor String No 该束的初始HTML帮助文件。
NSAppleScriptEnabled String No 指定是否支持AppleScript。
NSHumanReadablecopyright Yes 显示在对话框中的版权信息。
NSJavaNeeded Boolean or String 指定该程序是否需要一个Java虚拟机。
NSJavaPath Array 一组java类所在的路径(前面需要加上NSJavaRoot)。
NSJavaRoot 包含java类的根目录。
NSMainNibFile 应用程序的主nib文件名。
nsprincipalClass 束的主类的名字。
NSServices 一组描述了由应用程序所提供的服务的字典。

 

CFAppleHelpAnchor

CFAppleHelpAnchor关键字定义了束的初始HTML帮助文件名,不需要包括.html或.htm扩展名。这个文件位于束的本地化资源目录中,或者如果没有本地化资源目录的话,则直接被放在Resources目录中。

 

NSAppleScriptEnabled

NSAppleScriptEnabled关键字说明了该应用程序是否支持AppleScript。如果您的应用程序支持,就需要把该字符串的值设为“Yes”。

 

NSHumanReadablecopyright

NSHumanReadablecopyright关键字包含了一个含有束的版权信息的字符串。您可以在“关于”对话框中显示它。该关键字通常会出现在InfoPlist.strings文件中,因为往往需要本地化该关键字的值。

 

NSJavaNeeded

NSJavaNeeded关键字含有一个布尔值,用来确定在执行该束的代码之前Java虚拟机是否需要被载入并运行。您也可以指定一个字符串类型的值“YES”代替布尔型的值。

 

NSJavaPath

NSJavaPath关键字包含了一组路径。每一个路径指向一个java类。该路径相对于由NSJavaRoot关键字定义的位置来说,可能是一个绝对路径也可能是一个相对路径。开发环境会自动把这些值保存在数组中。

 

NSJavaRoot

NSJavaRoot关键字含有一个指向一个目录的字符串。该目录是应用程序的java类文件的根目录。

 

NSMainNibFile

NSMainNibFile关键字包含了一个含有应用程序的主nib文件名(不包含.nib文件扩展名)的字符串。一个nib文件作为一个Interface Builder的存档文件,含有对用户界面的详细描述信息以及那些界面中的对象之间的关联信息。当应用程序被启动时,主nib文件会被自动装载。Mac OS X会寻找与应用程序名相匹配的nib文件。

 

nsprincipalClass

nsprincipalClass关键字定义了一个束的主类的名称。对于应用程序来说,缺省情况下这个名字就是应用程序的名字。

 

NSServices

NSServices包含了一组字典,它详细说明了应用程序所提供的服务。表A-5列出了用来指定服务的关键字。

表 A-5 NSServices字典的关键字

关键字
类型
描述
NSPortName String 该关键字指定了由您的应用程序监听器为接受外部服务请求所提供的端口名称。
NSMessage 该关键字指定了用来调用该服务的实例方法名。在Objective-C中,实例方法的形式是messageName:userData:error:。在Java中,实例方法的形式是messageName(NSPasteBoard.String)。
NSSendTypes Array 该关键字指定了一组可以被该服务读取的数据类型名。NSPasteboard类列出了几个常用的数据类型。您必须包含此关键字,NSReturnTypes,或者两者。
NSReturnTypes 该关键字指定了一组可以被该服务返回的数据类型名。NSPasteboard类列出了几个常用的数据类型。您必须包含此关键字,NSSendTypes,或者两者。
NSMenuItem Dictionary 该关键字包含一个字典,它指定了加入Services菜单中的文本。字典中的唯一一个关键字被称为default并且它的值是菜单项的文本。该值必须是唯一的。您可以使用斜杠“/”来指定一个子菜单。例如,Mail/Send出现在Services菜单中时就是一个带有Send子菜单并且名为Mail的菜单。
NSKeyEquivalent 该关键字是可选的,并且包含一个含有用来请求服务菜单命令的快捷按键的字典。与NSMenuItem类似,字典中的唯一一个关键字被称为default并且它的值是单个的字符。用户可以通过按下Command,Shift功能键和相应的字符来请求该快捷按键。
NSUserData 该关键字是一个可选字符串,它含有您的选择值。
NSTimeout 该关键字是一个可选的数字字符串,它指定了从应用程序请求服务到收到它的响应所需要等待的毫秒数。

 

启动服务关键字

启动服务关键字规定了Mac OS X中的应用程序是怎样被启动的。这些关键字适用于CFM和Mach-O可执行文件。有关CFM和Mach-O可执行文件的详情可参见“安装和集成”一章中的“CFM可执行文件”。表A-6列出了启动服务的关键字。

表A-6启动服务关键字

是否必须
摘要
LSBackgroundOnly No 指定了应用程序是否仅仅运行在后台。(仅适用于Mach-O的应用程序)。
LSPrefersCarbon 指定了应用程序是否优先运行在Carbon环境中。
LSPrefersClassic 指定了应用程序是否优先运行在Classic环境中。
LSRequiresCarbon 指定了应用程序是否必须运行在一个Carbon环境中。
LSRequiresClassic 指定了应用程序是否必须运行在一个Classic环境中。
lsuielement 指定了应用程序是否是一个用户界面组件,即一个应用程序不应该出现在Dock中或强制退出窗口。

 

LSBackgroundOnly

如果该关键字存在并且被设为“1”,启动服务将只会运行在后台。您可以使用该关键字来创建无用户界面的后台应用程序。如果您的应用程序使用了连接到窗口服务器的高级框架,但并不需要显示出来,您也应该使用该关键字。后台应用程序必须被编译成Mach-O可执行文件。该选项不适用于CFM应用程序。

您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。

 

LSPrefersCarbon

如果该关键字被设为“1”,Finder将会在显示简介面板中显示“在Classic环境中打开”控制选项,缺省情况下该控件未被选中。如果需要,用户可以修改这个控制选项来在Classic环境中启动应用程序。

您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersClassic,LSRequiresCarbon,或LSRequiresClassic关键字。

 

LSPrefersClassic

如果该关键字被设为“1”,Finder将会在显示简介面板中显示“在Classic环境中打开” 控制选项,缺省情况下该控件被选中。如果需要,用户可以修改这个控制选项来在Carbon环境中启动应用程序。

您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersCarbon,或LSRequiresClassic关键字。

 

LSRequiresCarbon

如果该关键字被设为“1”,启动服务将只在Carbon环境中运行应用程序。如果您的应用程序不应该运行在Classic环境中的话,可以使用该关键字。

您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersCarbon,LSPrefersClassic,或LSRequiresClassic关键字。

 

LSRequiresClassic

如果该关键字被设为“1”,启动服务将只在Classic环境中运行应用程序。如果您的应用程序不应该运行在Carbon兼容环境中的话,可以使用该关键字。

您也可以指定该关键字的类型为Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支持这些类型的值。如果您在您的属性列表中加入了该关键字,那么就不要同时加入LSPrefersCarbon,或LSRequiresCarbon关键字。

 

lsuielement

如果该关键字被设为“1”,启动服务会将该应用程序作为一个用户界面组件来运行。用户界面组件不会出现在Dock或强制退出窗口中。虽然它们通常作为后台应用程序运行,但是如果希望的话,它们也可以在前台显示一个用户界面。点击属于用户界面组件的窗口,应用程序将会处理产生的事件。

Dock和登录窗口是两个用户界面组件应用程序。

 

应用程序包关键字


应用程序打包的目的是把一个应用程序打包成一个自我包含的实体,并且对用户隐藏了它的内容。然而,用户常常希望操作应用程序的某些文件。例如,用户可能希望添加或删除某个插件,本地化资源,等等。开发者可以在Info.plist 文件中指定一些可以由用户维护的项目。那么Finder会把这些项目显示在束的信息面板中,并允许用户浏览,删除或添加这些项目。

 

CFBundleInstallerInfo

应用程序打包信息的根关键字是CFBundleInstallerInfo。该关键字定义了一个字典,它包含了表A-7中所列出的关键字。“是否必须”列指出了哪些是您必须支持的功能。

表A-7应用程序打包关键字

关键字
类型
是否必须
APInstallerURL String Yes 一个指向您希望安装的文件的URL路径。
APFiles Array 一组字典,描述了那些可以被安装的文件或目录。

 

APInstallerURL

APInstallerURL关键字指定了一个指向您希望安装的文件的路径。您必须以file://localhost/path/ 形式来说明这个路径。所有被安装的文件必须位于这个文件夹中。

 

APFiles

APFiles关键字指定了一个字典,描述了您希望安装的文件。每个字典条目可以包含某个文件或目录的描述。您可以让APFiles 关键字包含在其自身中,用于指定在目录内部的文件。表A-8列出了用来指定有关单个文件或目录的信息。

表A-8 APFiles字典关键字

关键字
类型
描述
APFileDescriptionKey String 用来显示在Finder的信息窗口中的简短描述。
APdisplayedAsContainer 如果值为“Yes”,该项目作为一个目录图标显示在信息面板中;否则,它被显示为一个文档图标。
APFileDestinationPath 一个安装组件的相对路径。
APFileName 文件或目录的名称。
APFileSourcePath 指向应用程序包中组件的路径,相对与APInstallerURL路径。
APInstallAction 操纵组件的动作:“copy”或者“Open

Android基础总结(持续更新)

Android基础总结(持续更新)

1、简述activity的launchMode四种启动方式的理解

standard 默认标准启动模式:无论任务站中是否存在该activity,只要是激活activity都会创建一个新的activity。

singleTop 如果要激活的activity正好位于任务栈顶,则会调用NewIntent()方法,重用该activity,如果栈顶不是该activity则会重新创建一个实例。

singleTask 如果要激活的activity存在于任务栈中,就会调用NewIntent()方法,并把该activity以上的都移除掉,如果任务栈中不存在,则创建新实例。与singleTop不同的是singTop只检查栈顶的activity,singleTask会遍历所有activity。

singleInstance 可以理解为单例模式吧。任务栈中只要存在该activity,无论是谁激活,都会重用该activity,也就是任务栈中只会存在一个activity实例。

2、常用的布局?

LinearLayout  RelativeLayout  FrameLayout  TableLayout  AbsoluteLayout

3、activity fragment service生命周期,broadcastReceiver注册方式

activity   :  oncreate(),onstart(),onresume(),onpause(),onstop(),ondestory()

fragment  : onAttch(),onCreate(),onCreateView(),onstart(),onresume(),onpause(),onstop(),ondestoryView(),ondestory()

service的生命周期要看他的启动模式了,他有两种启动模式

通过startService()启动: oncreate(),onstartCommand(),ondestory() ,以这种方式启动的service只要不调用stopService()方法可以后台一直运行,多次启动service只会调用onstartCommand()方法,不会重复创建。

通过bindService()启动 : oncreate(),onbind(),onunbind(),ondestory(),以这种方式启动的service与绑定的activity生命周期也是绑定的,当activity结束的时候要调用onunbind()方法。

broadcastReceiver 分两种,一种是有序广播,在manifest可以设置广播的优先级,最高100,优先级越高越最早获得广播;一种是无序广播,大家都是平级的几乎同时收到广播。

广播也分两种注册方式,第一种是静态注册,就是在manifest中注册广播,这种广播即使程序销毁,也可以接受广播;另一种是动态注册,在java代码里注册,activity销毁的时候要调用unregisterBroadcastReceivr()解除注册。

4、事件分发机制

建议看一下郭神的博客,相信看完以后你会深刻的理解分发机制。博客地址

Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

5、动画

Android提供了几种动画类型:tween动画,frame动画,property属性动画

前两种也是我们常见的比较简单的动画,tween动画提供了平移、旋转、透明度、缩放的动画效果,有一定局限性,动画结束后控件还是会回到原来的位置,因此实现复杂点的动画还要借助属性动画;frame动画是一个循环展示drawable序列,类似幻灯片。

关于属性动画请移步

Android动画之Property属性动画

Android动画之Property属性动画--高级用法

6、activity在锁屏、点击home键、横竖屏切换、dialog弹出 生命周期变化

锁屏:onpause()-onstop() 解锁 onrestart()-onstart()-onresume()

点击home : onpause()-onstop() 切换回来 onrestart()-onstart()-onresume()

横竖屏切换:不设置configchanges,切横屏执行一次遍生命周期,切竖屏执行两次生命周期。

设置configchanges=“orientation”,切换横竖都执行一遍。

设置configChanges="orientation|keyboardHidden" ,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

dialog 弹出:onpause()-onresume()

7、service和Intentsevice不同

service与应用程序在一个进程中,如果进行耗时操作可能会ANR,intentService是继承自service的一个类,在intentService中有一个工作线程可以进行耗时操作,执行完毕会自动关闭。

8、fragmentActivity 与Activity有什么不同

1、fragmentactivity 继承自activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。 
2、当然3.0之后你就可以直接继承自Activity,并且在其中嵌入使用fragment了。 
3、获得Manager的方式也不同 
3.0以下:getSupportFragmentManager() 
3.0以上:getFragmentManager()

9、surfaceview  view区别

surfaceView是在一个新起的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面。那么在UI的主线程中更新画面 可能会引发问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等消息。当使用surfaceView 由于是在新的线程中更新画面所以不会阻塞你的UI主线程。但这也带来了另外一个问题,就是事件同步。比如你触屏了一下,你需要surfaceView中 thread处理,一般就需要有一个event queue的设计来保存touch event,这会稍稍复杂一点,因为涉及到线程同步。

10、asyncTask优缺点,是否支持100并发

使用的优点:

简单,快捷

过程可控      

使用的缺点:

在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.

  AsyncTask用的是线程池机制,容量是128,最多同时运行5个core线程,剩下的排队。

11、onNewIntent()是么时候调用

onNewIntent()--onReStart()--onStart()--onResume()

 

12、handler 机制原理,messageQueue looper核心方法

 

13、requestLayout(),invalidate(),postinvalidate()各调用了View绘制的那几个流程?

requestLayout():measure、layout、draw

invalidate(),postinvalidate():draw

postinvalidate()与invalidate()一样,但invalidate()用于主线程,postinvalidate()用于子线程。

看下postinvalidate()源码:

一
public void postInvalidate() {
    postInvalidateDelayed(0);
}

public void postInvalidateDelayed(long delayMilliseconds) {
    // We try only with the AttachInfo because there''s no point in invalidating
    // if we are not attached to our window
    final AttachInfo attachInfo = mAttachInfo;
    if (attachInfo != null) {
        attachInfo.mViewRootImpl.dispatchInvalidateDelayed(this, delayMilliseconds);
    }
}
二
public void dispatchInvalidateDelayed(View view, long delayMilliseconds) {
    Message msg = mHandler.obtainMessage(MSG_INVALIDATE, view);
    mHandler.sendMessageDelayed(msg, delayMilliseconds);
}
三
final ViewRootHandler mHandler = new ViewRootHandler();

final class ViewRootHandler extends Handler {
        @Override
        public String getMessageName(Message message) {
            ....
        }

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case MSG_INVALIDATE:
                ((View) msg.obj).invalidate();
                break;
            ...
        }
    }
}

postinvalidate()执行的时候会判断attachInfo!=null,即必须保证视图已经被加载进了窗口,然后通过下面的几个方法会用handler发送一个message到主线程,最后还是调用了invalidate()方法。

借用一张图来看一下几个方法的关系:

 

 

BZOJ 刷题总结(持续更新)

BZOJ 刷题总结(持续更新)

本篇博客按照题号排序(带*为推荐题目)

1008 [HNOI2008]越狱

很经典的题了。。龟速乘,龟速幂裸题,,

1010 [HNOI2008]玩具装箱toy*

斜率优化 基本算是裸题。

1012 最大数

单调队列/单调栈 随便搞一搞就好 (水题。。。)

1045 糖果传递(双倍经验请做 3293 分金币)

贪心+中位数  排序后搞一搞可过。。(水题。。。)

1051 受欢迎的牛*

tarjan (提高T1+ -- T2难度)

1106: [POI2007]立方体大作战tet*

树状数组+贪心

1191 [HNOI2006]超级英雄Hero*

二分图匹配裸题   匈牙利可过   将每个题向他们所对应的妙计连条边  这样的话,一边是题目,一边是妙计,跑匈牙利即可。

1230 [Usaco2008 Nov]lites 开关灯

线段树裸题

1258 [CQOI2007]三角形tri*

找规律  一个三角形最多周围有三个三角形连着。 然后如果末尾是4,则与它相邻的是该组的1,2,3。如果末尾是1/2/3,与他们相邻的一定是各种4......,而且第一个一定是同组的4,然后剩下的找找规律就好了。。

1259 [CQOI2007]矩形rect

吐槽一下当年的重庆市选。。怎么连着出打表+找规律呢。。  这个题。。网上说插头DP。。可我只会打表。如何打,网上有。。。

1260: [CQOI2007]涂色paint*

区间DP

1349 [Baltic2006]Squint

继 A+B problem 之后最水的一个题。。  输出根号n ,n为long long。

1355: [Baltic2009]Radio Transmission

kmp入门题目,next数组上做文章。

1379 [Baltic2001]Postman

题目有误。。输出m即可。

1483 [HNOI2009]梦幻布丁*

比较罕见的链表应用题   把相同颜色的用链表拴在一块,用类似并查集的东东维护合并,好像得用启发式合并。。(比较好的一道题)

1511 [POI2006]OKR-Periods of Words

kmp next数组的题

1556 墓地秘密*

状压dp+spfa

1601 [Usaco2008 Oct]灌水*

思想很好,需要建立一个超级原点,向每个点连接一条价值为该点点权的边,最后跑最小生成树即可。

1607 [Usaco2008 Dec]Patting Heads 轻拍牛头

大水题。。 开个桶+筛法。

1621 [Usaco2008 Open]Roads Around The Farm分岔路口

递归水题。

1725 [Usaco2006 Nov]Corn Fields牧场的安排

状压入门题目。

1740 [Usaco2005 mar]Yogurt factory 奶酪工厂

递推水题(稍带点贪心思想)

1755 [Usaco2005 qua]Bank Interest

没有翻译,但是看样例就能看明白的程序语法基础题了解一下。。

1789  [Ahoi2008]Necklace Y型项链(双倍经验请做1830  [AHOI2008]Y型项链)

大水题。。。  贪心+乱搞。。。(真的是乱搞。。)

1832 [AHOI2008]聚会(双倍经验请做 1787)

lca裸题

1854 [Scoi2010]游戏*

二分图/并查集  我用的并查集 把一个有a,b两种属性的武器看成点a,b之间的无向边,对于一个联通块,假如不含环(就是一棵树),那么必定可以满足其中任意的p-1个点。对于一个联通块,假如含环,那么必定全部的p个点都能满足。那么合并并查集的时候可以利用一个vis来维护这个性质。把权值看成点,把武器看成边。如果每次加入的边是合并两个联通块。就把权值小的联通块并到权值大的联通块,然后给权值小的vis=true。如果不是,就把该联通块的顶点的vis=true。这样就可以保证,如果一个大小为N联通块由N-1条边构成,最大点的vis=false,其他为true,如果由≥N条边构成,所有点的vis=true

然后最后只要一次扫描vis就可以得出答案了 (摘自http://hzwer.com/2950.html) (不想打了。。

1911 [Apio2010]特别行动队*

斜率优化

1951 [Sdoi2010]古代猪文*

中国剩余定理

2150 部落战争*

二分图最小覆盖

2173 整数的lqp拆分

数学题,导式子。。(luogu五行黑题之一。。)

 

2179 FFT快速傅立叶

见题目。。

 

 

2194 快速傅立叶之二

fft

 

2208 [Jsoi2010]连通数

bfs暴力即可,但是需要各种优化,比如对于$vis$数组,我们需要用时间戳。。(不然会TLE)。

2222 [Cqoi2006]猜数游戏

网上没人知道该怎么做,但是莫名的特判十个点就好了。。。

2456 mode*

神级水题。。注意内存,注意性质。

2464 中山市选[2009]小明的游戏

最短路 可以暴力按标号建边。

2523 [Ctsc2001]聪明的学生*

好题好题。。 记忆化搜索,得好好想一想,不然题目白瞎了。。

2600: [Ioi2011]ricehub

二分查找

2705 [SDOI2012]Longge的问题

裸欧拉函数。

2748 [HAOI2012]音量调节

背包

2763 [JLOI2011]飞行路线*

分层图最短路   此题卡spfa.....

3007 拯救小云公主*

二分答案+验证/kruskal+连通性/spfa(没太懂)

3155 Preprefix sum*

练习数状数组比较好的一道题。

3175 [Tjoi2013]攻击装置*

二分图最大独立集。

3386 [Usaco2004 Nov]Til the Cows Come Home 带奶牛回家

最短路裸题,坑点有点多(网上阵亡一大片。。)

3410 [Usaco2009 Dec]Selfish Grazing 自私的食草者

稍带idea的水题 没啥算法。

 

3527 [Zjoi2014]力

FFT

 

3670 [Noi2014]动物园

kmp fail指针的应用。

4397 [Usaco2015 dec]Breed Counting

前缀和水题

4511 [Usaco2016 Jan]Subsequences Summing to Sevens

有(yi)点(yan)意(ti)思(...)数学题。

4827 [Hnoi2017]礼物

FFT

5085 最大*

二分答案,难点在如何check()。(更难的是分析自己想到的时间复杂度。。)

未完待续。。

DB2技巧总结(持续更新)

DB2技巧总结(持续更新)

  1. 查看当前连接的数据库

    select db_name from table(SNAPSHOT_DATABASE('''',-1)) as t

  2.  DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=PK_CUSTOMER, DRIVER=3.64.96

    1. 使用的表中是否存在【SQLERRMC=DJPOSITION】引用的字段。

    2. 确认是SQL中使用字段是写错误了,还是表中不存在相关字段。

      其是说白了就是你字段写错了0.0

    3.     查看数据库中所有用户的所有表

            select   tabname   from   syscat.tables   where   tabschema   =   current   schema

Dom中高big 事件总结(持续更新中)

Dom中高big 事件总结(持续更新中)

将前段时间自己用到的,比较少见,但是功能很强大的事件在这里总结下,一来自己重新梳理归档下,二来,没用过的同学也可以尝试用下。其实,这些都是基础知识,但是基础是最重要的。还记得老师说过:''基础不牢,地动山摇'',很有道理!

想要全面了解的,可以查看菜鸟教程DOM

一、onhashchange事件

1.何为hash?

hash为URL中#后面的部分,可以通过window.location.hash来查看设置;页面打开后可以自动滚动定位到指定位置,这个位置设定可以通过 一 使用锚点,比如 <a name="target"></a>, 二 使用id属性,比如<span id="target"></span>

2.hash特点

  • hash值浏览器是不会随请求发送到服务器端的,比如当打开http://www.example.com/#print服务器实际收到的请求地址是http://www.example.com/,是不带hash值的
  • hash还有另一个特点,它的改变不会导致页面重新加载

3.hashchange事件

当hash变化时,会触发hashchange事件,触发时,事件对象有两个参数

window.onhashchange = function(e){
        console.log(''old URL:'', e.oldURL)
        console.log(''new URL'', e.newURL)
    }

二、ontransitionend事件

transitionend 事件在 CSS 完成过渡后触发
注意: 如果过渡在完成前移除,例如 CSS transition-property 属性被移除,过渡事件将不被触发。

三、onbeforeunload事件

onbeforeunload 事件在即将离开当前页面(刷新或关闭)时触发。

该事件可用于弹出对话框,提示用户是继续浏览页面还是离开当前页面。

对话框默认的提示信息根据不同的浏览器有所不同,标准的信息类似 "确定要离开此页吗?"。该信息不能删除。

但你可以自定义一些消息提示与标准信息一起显示在对话框。

注意: 如果你没有在 <body> 元素上指定 onbeforeunload 事件,则需要在 window 对象上添加事件,并使用 returnValue 属性创建自定义信息(查看以下语法实例)。

注意: 在 Firefox 浏览器中,只显示默认提醒信息(不显示自定义信息)。

四、onunload事件

onunload 事件在用户退出页面时发生。

onunload 发生于当用户离开页面时发生的事件(通过点击一个连接,提交表单,关闭浏览器窗口等等。)

注意: onunload 事件同样触发了页面载入事件(+ onload 事件)。

五、onstorage事件

该事件在 Web Storage(HTML 5 Web 存储)更新时触发

六、onpopstate事件

该事件在窗口的浏览历史(history 对象)发生改变时触发

七、onabort事件

onabort 事件在用户中止加载 <img> 或 <input type="image"> 元素时触发。

八、onvisibilitychange事件

切换浏览器tab,触发相应的事件

关于iphone info.plist 各字段含义总结持续更新,欢迎指点的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Android基础总结(持续更新)、BZOJ 刷题总结(持续更新)、DB2技巧总结(持续更新)、Dom中高big 事件总结(持续更新中)等相关知识的信息别忘了在本站进行查找喔。

本文标签: