Application
每个应用程序在不指定application的时候,系统都会帮助生成一个Application的实例。
一个Application代表的就是当前的应用程序
一般使用Application来做
- 共享数据
- 循环便利退出
- 初始化第三方组件
如果要实现这上面这三点,一般需要实现单例模式,注意点: - 不允许私有构造方法,由系统初始化
- 不允许创建对象,对象由系统创建
- 在onCreate生命周期中,将instance对象和this绑定。
Activity
android的核心对象之一
所有和用户交互(显示,操作)的功能都在这里
1. android:screenOrientation 指定当前Activity显示横竖等
2. android:exported 是否允许activity被其它程序调用
3. android:launchMode 设置Activity的启动方式standard、singleTop、sin
4. gleTask和singleInstance
- Android四大组件之一,
- Activity 95% 显示UI,处理和用户的交互
- Service 2% 处理后台长期任务,没有界面
- BroadcastReceiver 3% 通信,组件交互,
- ContextProvider 0% 获取联系人,短信。
Context 上下文
1. context 是 Application 和 activity的父类2. 2.很多方法中,传递的都是上下文,而不是具体的Activity或者Applicati
Activity的生命周期
- 创建 onCreate - onStart - onResume
- 死亡 onPause - onStop - onDestroy
被盖住的情况 - 完全盖住 onPause - onStop 运行 onRestart - onStart - onResume
- 遮住一部分 onPause 运行 onResume
- 被回收了 被杀死,不会再执行任何的方法,在回来的时候,已经不是它了,从新创建另外
一个activity
创建Activity
- 创建类继承于Activity
- 重写onCreate的方法并且设置布局(setContentView)
- 在manifest中application节点下注册activity(name=创建activity)
跳转Activity
- Intent intent = new Intent(this, 要跳转的Activity.class);
- startActivity(intent);
Toast
1. 使用静态方法来创建一个Toast对象,调用show方法来展示到屏幕上,一段时间后会自动消失
。
2. Toast toast = Toast.makeText(Context context,"msg",时间);
Toast.LENGTH_LONG,Toast.LENGTH_SHORT
3. toast.show();
LogCat界面
- Log 日志输出工具
2. - Log.e w i d v
- 可以添加过滤器,一般使用Tag和Application Name(包名+类名)来做过滤
- 启动过程
-
- 用户点击某个应用
-
- android系统开始查找该应用中的manifest清单文件,并且开始实例化Application
-
- 开始在整个Application中查找启动页面,去实例化整个启动Activity
-
- 启动的Activity开始实例化,并且调用各个生命周期方法
1. 如果没有,执行:window-show View - other - android - logcat
2.
3. 过滤器,一般通过 应用程序包名和Tag来过滤
4.
5. 文本过滤,可以筛选文本
6.
7. 过滤等级 v,d,i,w,e分别对应Log类的5个日志输出
8. Log.v
9. Log.d
10. Log.i System.out
11. log.w
12. Log.e
错误
1. ActivityNotFound 没有在manifest中声明
2. 颜色必须是 3 4 6 8
3. Activity修改掉了MainActivity
4. Activity配置的时候路径是你自己的
5. TextView可以配置图片 左右上下 DrawableLeft,Right,Top,Bottom
关闭Activity
- finish();//关闭当前的Activity
点击事件是View的方法,任意一个视图都可以被点击
xml中配置的点击事件
1. 在对应的Activity中,去实现这个方法
2. public void xxx(xml中设置的方法名)(View v){
3. //v代表当前点击的视图
4. }
代码中配置点击事件
- 直接设置this,让activity去实现这个接口,重写这个方法
- 直接new OnClickListener(){//重写方法};
Activity常用方法
1. //设置布局
2. 设置布局:setContentView(View/layoutId)
3. 关闭Activity:finish()
4. 从Activity找到组件:findViewById(resId);
监听事件
1. 每个组件 都有 监听事件。
2. View有三个监听器
3.onClickListener 点击事件
4. onLongClickListener 长按事件
5. //自定义View去讲
6.onTouchListener 触摸监听 (按下,抬起,滑动)
1. view.setOnClickListener(OnClickListener);
2.
3. interface OnClickListener
4. {
5. void onClick(View v);
6. }
设置字体
1. 在accets中添加字体(不能中文)
2. tv.setTypeface(Typeface.createFromAsset(getAssets(), "ttf/fzfdw.ttf"));
Activity栈
Activity带参跳转,带参返回
1. Bundle:专门用来携带数据的一个类,里面可以存放各种基本数据类型和序列化的对象。
2. Intent:intent有一个Bundle的成员变量,所有数据实际存放在Bundle
3. intent可以put的数据类型有:
4. 8种基本数据类型和数组
5. String和String数组
6. ArrayList<String|Integer>
7. 两种序列化对象
1. Intent intent = new Intent(Activity.this,xxx.class);
2. intent.putXXX(key,value);//将数据保存在intent中
3. startActivity(intent);
4.
5.
6. Intent intent = getIntent();
7. XXX data = intent.getXXX(key[,defalutValue]);
Activity带参返回
启动和普通不一样,启动方法为
startActivityForResult(intent,请求识别码);
重写Activity的 onActivityResult的方法来接受返回数据
返回数据页面中调用 setResult(RESULT_CODE[,Intent data]);finish();返回数据
ImageView 动态设置图片 setImageResouce(R.drawable.xxx);
代码创建
布局技巧
include
merge