android基础 3.23-3.30

(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资源目录介绍下
<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),让系统自动回收
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值