Android应用程序基础(Manifest结构预览约定和进程生命周期)

一、应用程序资源介绍


1.R类及资源的关系
2.res资源文件夹
3.常用的资源及其所在文件夹


value资源: 

            1)string

            2)color(argb,a:α通道,即透明度;r:red;g:green;b:blue)
   3)dimen  比较px(像素),dp(dip:与密度无关的相对像素),sp(与密度和范围都无关的像素)
       px(screen pixels)像素
in(physical inches)英寸
pt(pysical points)点距
mm(physical millimeters)毫米
dp(density-independent pixels relative to a 160-dpi screen)密度无关像素
sp(scale-independent pixels)范围无关像素
   
    [长宽高用dp]
    [字体相关用sp]
   4)array
   5)Location    a.value-fr
             b.value-en


value资源
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">To Do List</string>
<color name="app_background">#FF0000FF</color>
<dimen name="default_border">5px</dimen>
<array name="string_array">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</array>
<array name="integer_array">
<item>3</item>
<item>2</item>
<item>1</item>
</array>
</resources>


style & theme
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="BaseText">
<item name="android:textSize">14sp</item>
<item name="android:textColor">#111</item>
</style>
<style name="SmallText" parent="BaseText">
<item name="android:textSize">8sp</item>
</style>
</resources>


drawable
drawable里面通常也会有跟界面元素美化相关的xml,可以参见系统应用程序的例子,
因此看到除了图片之外的xml不要惊慌


layout

anim(animation)    1.tweened animation(anim)

                2.frame by frame animation(drawable)


tweened animation(anim)
<?xml version="1.0" encoding="utf-8">
<set xmlns:android="http://schemas.android.com/apl/res/android"
android:interpolator="@android:anim/acclerate_interploator">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:duration="1000"/>
<scale
android:fromXScale="1.0"
android:toXScale="0.0"66 CHAPTER 3 CREATING APPLICATIONS AND ACTIVITIES
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:duration="500"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="500"/>
</set>

frame by frame animation(drawable)
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/rocket1" android:duration="500"/>
<item android:drawable="@drawable/rocket2" android:duration="500"/>
<item android:drawable="@drawable/rocket3" android:duration="500"/>
</animation-list>

menu(menu)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_refresh"
android:title="Refresh"/>
<item android:id="@+id/menu_settings"
android:title="Setting"/>
</menu>


调用应用程序资源:  

1)代码中调用

2)资源文件之间相互调用
3)调用系统资源
4)指定当前主题的样式


指定当前主题格式
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/stop_message"
android:textColor="?android:textColor"/>
注:元素都要小写,


Manifest文件及其声明
1)应用程序的全局配置文件
2)应用程序的入口配置


1.Manifest结构预览
  <?xml version="1.0" encoding="utf-8"?>
  <manifest>
    <uses-permission /> -设置应用程序使用的权限
    <permission /> - 自定义权限
    <permission-tree /> - 自定义权限树 -方便我们有大量权限的时候,动态添加权限到树
    <permission-group /> - 自定义权限组
    <instrumentation / > - 测试构件(以单位测试为主)
    <uses-sdk /> - 使用sdk版本
    <uses-configuration />
    <uses-feature />
    <support-screens />
    <compatible-screens />
    <supports-gl-texture />
    
    <application>
      <activity>
        <intent-filter>
        <action />
<category />
<data />
</intent-filter>
<meta-data />
      </activity>
      <activity-alias>
<intent-filter>...<.intent-filter>
<meta-data/>
      </activity-alias>
      <service>
        <intent-filter>...</intent-filter>
<meta-data/>
      </service>
      <receiver>
        <intent-filter>...</intent-filter>
<meta-data />
      </receiver>
      <provider>
        <grant-uri-permission>
<meta-data />
      </provider>
      <uses-library />
    </application>
  </manifest>


2.文件约定
  1)Elements(元素)
    a.元素全部用小写
    b.<manifest><application>必须有且仅有一个
    c.同一级别的元素顺序无关,除了<activity-alias>必须跟在<activity>之后

  2)Attributes(属性)
      a.属性都是可选的
      b.除了<manifest>的属性,其他元素属性都有android:前缀,但在类里面,这些是去掉的


  3)声明类的名称
<manifest...>
 <application...>
   <service android:name="com.example.project SecretService"...>
     ...
   </service>
   ...
 </application>
</manifest>
比较二者
<manifest package="com.example project"...>
 <application...>
    <service android:name="SecretService"...>
      ...
    </service>
    ...
 </application>
</manifest>
   4)多值
      <inten-filter...>
        <action android:name="android.intent.action.EDIT|INSERT|DELETE" />
<action android:name="android.intent.action.INSERT" />
<action android:name="android.intent.action.DELETE" />
...
      </intent-filter>


   5)资源值
      资源引用格式:
      @[package:]type:name
      比如:
      <activity android:icon="@drawable/smallPic"...>


      主题引用格式:
      ?[package:]type:name


3.Manifest的作用及使用举例
  1)包的唯一指定名
  2)Android四大组件的定义:Activity,Service,BroadcastReceiver,Content Provider
  3)定义应用程序具备的权限
  4)定义Instrumatation做自动化测试
  5)定义应用程序所需的最小API版本号
  6)列出应用程序所需要的类库


4.Manifest如何解析的?
  如果你是设计,如何设计?
  1)应用程序安装的时候,manifest信息会放到一张系统索引表里面
  2)系统启动的时候,PackagedManageService读取Manifest信息
  3)应用程序启动时候,Launcher进行系统级判断,比如zuixiaoSDK等
     Lab:设定minSDK > 你当前机器或者模拟器版本,测试启动现象
  4)四大组件在需要的时候实例化
     Lab:不配置一个Activity(非主Activity),看看不调用的时候系统会是否异常



Android进程生命周期(Process Lifecycle)


面试题:在应用程序中,突然按了Back按钮,当前应用程序关闭了么?Activity消亡了么?

Android5个进程等级

----------------------------------------------

1.Active Process                         |        critical priorl
      ↓                                              |
-----------------------------------------------

2.Visible Process                        |         High Priority
      ↓                                              |
3.Started Service Process          |
      ↓                                              |
-----------------------------------------------
     |
4.Background Process              |         Low Priority
      ↓              |
5.Empty Process                        |
----------------------------------------------

1.Active Process
1)正处于Activity Resume()状态
2)正处于与bound服务交互的状态
3)正处于服务在前台运行的状态,(startForeground()被调用)
4)Service生命周期函数正在被执行(onCreate(),onStart(),onDestroy())
5)BroadcastReceiver正在执行onReceive()方法
杀死Foreground Process 需要用户响应,因为这个安全优先级是最高的


2.Visible Process
当前进程不是焦点进程,Activity不在前端显示,但也没有完全隐藏,能够看得见,比如弹出一个对话框。(Input Method)
一个bound到visible或者foreground的activity的Service


3.Service Process
正在运行的,不再上述两种状态的Service


4.Background Process
不可见状态的Activity进程,又没有任何相关的Service运行的(onStop()被调用),系统有个后台进程列表,一般情况采取后进先出的原则来释放后台进程资源


Android进程如何启动和消亡的?
AndroidApplication Class  App Lifecycle event method


退出进程的两种方式
finish();//不会关闭进程,只是关掉当前Activity
system.exit(0);//0代表关闭所有进程

Process.killProcess(Process.myPid())


----------------------------------------------------------------------------------------------------------------

后续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值