(3-23)
开机显示home主界面,呈现所有app,其为 系统级程序,名为launcher,开机优先启动,本质也为activity, 所在源码packages/apps/Launcher2/
android-4.0.3/frameworks/base/core/java/android/包含app、database、util、view等,即framework
(3-24)app资源目录介绍上
Values资源包括:string、color、dimen、array、location(多国语言)
单位:px像素、in英寸、pt(physical points)点距、mm毫米、dp密度无关像素、sp范围无关像素
Dp(density-independent pixels relative to 160-dpi screen)
长宽高用dp,字体用sp
(3-25) app资源目录介绍下
Drawable下可存png图片及xml文件
Animation分tweener animation(一张图片放大、缩小、旋转等,放anim目录)、frame by frame animation(需定义运动轨迹,放drawable目录)(放其它目录也可,但违背商业标准化)
(3-26)
this.getResources().getAssets(); //返回Resources、AssetManag
this.getResources().getDimension(R.dimen.broder);
<manifest><application>必须有且仅有一个
同一级别元素顺序无关,除 <activity-alias>必须跟在相应<activity>之后
(3-27)
元素都是类,其属性映射为类的属性
<uses-permission /> 安装时提示:更改wifi状态、读取手机状态和身份、…需经你授权
NFC:近场通讯(Near Field Communication)
(3-29)
Activity生命周期函数(android调用,程序员在相应函数中填写代码)
买车、打火、踩油门前进、松开油门刹车、熄火、车辆报废
生命周期函数成对儿
Activity状态:
Resumed处于运行状态
Paused另一activity位于前端,但本activity还可见
Stopped另一activity位于前端,完全遮挡本activity
//onDestory调用时机:①明确调用finish方法 ②系统资源紧张
------/
Android 五个进程等级:
Active process--visible process--service process--background process--empty process
Active process级别最高,前台进程:
①处于activity resume()状态
②处于与bound服务交互状态
③处于服务在前台运行状态(startForeground()被调用)
④service声明周期正在被执行(onCreate()、onStart()、onDestroy)
⑤broadcast正在执行onreceive()方法
杀死Active process需用户确定(不会被OS自动干掉) (点退出按钮,一般也仅切换进程优先级而已)
visible process:当前进程不是焦点进程,activity不在前端显示,但也没完全隐藏,如弹出对话框
service process:正在运行,但不处于上述两种状态的service
background process:不可见状态activity进程,又没任何相关service运行(onStop被调用)
empty process:没运行任何components的进程,保留该进程主要是缓存的需要(等待垃圾回收、再次切换回来可加快速度)
------/
Helloworld按home键退出background process,按back键退出empty process
点图标启动app过程: PackageManager(依赖PackageService)去start主activity(索引manifest列表),若发现进程还不存在,则向守护进程zygote请求实例化一个新的dalvikVM进程,并装载…
谁来kill?守护进程,其依赖kernel软驱动lowmemorykiller.c等
通过ps查看, finish()导致onDestroy()被调用,使当前activity消亡,但进程并未退出
System.exit(0);
Process.killProcess(Process.myPid()); // 所在包android.os
------/
旋转屏幕,activity会消亡然后重启
在<application><application/>标签,没设置android:name属性,因其默认实例化Application.java (android\app),可继承之后指定
开机显示home主界面,呈现所有app,其为 系统级程序,名为launcher,开机优先启动,本质也为activity, 所在源码packages/apps/Launcher2/
android-4.0.3/frameworks/base/core/java/android/包含app、database、util、view等,即framework
(3-24)app资源目录介绍上
Values资源包括:string、color、dimen、array、location(多国语言)
单位:px像素、in英寸、pt(physical points)点距、mm毫米、dp密度无关像素、sp范围无关像素
Dp(density-independent pixels relative to 160-dpi screen)
长宽高用dp,字体用sp
(3-25) app资源目录介绍下
<resources>
<string name="app_name">leds_hal</string>
<color name="green">#FF0000</color>
<dimen name="default_border">5dp</dimen>
<dimen name="large_font_size">16sp</dimen>
<array name="string_array">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</array>
</resources>
------/
Drawable下可存png图片及xml文件
Animation分tweener animation(一张图片放大、缩小、旋转等,放anim目录)、frame by frame animation(需定义运动轨迹,放drawable目录)(放其它目录也可,但违背商业标准化)
(3-26)
this.getResources().getAssets(); //返回Resources、AssetManag
this.getResources().getDimension(R.dimen.broder);
<manifest><application>必须有且仅有一个
同一级别元素顺序无关,除 <activity-alias>必须跟在相应<activity>之后
(3-27)
元素都是类,其属性映射为类的属性
<uses-permission /> 安装时提示:更改wifi状态、读取手机状态和身份、…需经你授权
NFC:近场通讯(Near Field Communication)
(3-29)
Activity生命周期函数(android调用,程序员在相应函数中填写代码)
买车、打火、踩油门前进、松开油门刹车、熄火、车辆报废
生命周期函数成对儿
Activity状态:
Resumed处于运行状态
Paused另一activity位于前端,但本activity还可见
Stopped另一activity位于前端,完全遮挡本activity
//onDestory调用时机:①明确调用finish方法 ②系统资源紧张
------/
Android 五个进程等级:
Active process--visible process--service process--background process--empty process
Active process级别最高,前台进程:
①处于activity resume()状态
②处于与bound服务交互状态
③处于服务在前台运行状态(startForeground()被调用)
④service声明周期正在被执行(onCreate()、onStart()、onDestroy)
⑤broadcast正在执行onreceive()方法
杀死Active process需用户确定(不会被OS自动干掉) (点退出按钮,一般也仅切换进程优先级而已)
visible process:当前进程不是焦点进程,activity不在前端显示,但也没完全隐藏,如弹出对话框
service process:正在运行,但不处于上述两种状态的service
background process:不可见状态activity进程,又没任何相关service运行(onStop被调用)
empty process:没运行任何components的进程,保留该进程主要是缓存的需要(等待垃圾回收、再次切换回来可加快速度)
------/
Helloworld按home键退出background process,按back键退出empty process
点图标启动app过程: PackageManager(依赖PackageService)去start主activity(索引manifest列表),若发现进程还不存在,则向守护进程zygote请求实例化一个新的dalvikVM进程,并装载…
谁来kill?守护进程,其依赖kernel软驱动lowmemorykiller.c等
通过ps查看, finish()导致onDestroy()被调用,使当前activity消亡,但进程并未退出
System.exit(0);
Process.killProcess(Process.myPid()); // 所在包android.os
------/
旋转屏幕,activity会消亡然后重启
在<application><application/>标签,没设置android:name属性,因其默认实例化Application.java (android\app),可继承之后指定
//——————/MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.exit(0);
//Process.killProcess(Process.myPid());
}
});
}
}
//——————/MyApp.java
public class MyApp extends Application {
@Override
public void onConfigurationChanged(Configuration newConfig) {//配置改变,如屏幕旋转
super.onConfigurationChanged(newConfig);
Log.i("lyl", "onConfigurationChanged");
}
@Override
public void onCreate() { //刚创建时
super.onCreate();
Log.i("lyl", "onCreate");
}
@Override
public void onLowMemory() {
super.onLowMemory();
Log.i("lyl", "onLowMemory");
}
@Override
public void onTerminate() { //被系统关闭时
super.onTerminate();
Log.i("lyl", "onTerminate");
}
}
//——————/Manifext.xml
<application
android:name=".MyApp"
二者均onCreate被打印,点击按钮,onTerminate没被打印(主activity的onDestroy()肯定也没被调用,因activity在application内部),都较粗暴,不推荐使用(除非写进程管理类app),让系统自动回收