Android应用编程--基本概念
来源:互联网 发布:云计算在企业中的应用 编辑:程序博客网 时间:2024/06/06 06:46
1. Android应用程序组成
2 Activity
• 每一个有用户界面的应用至少包含一个activity
• 一个应用可以有多个activity,其中一个作为main activity用于启动显示
• Activity通过startActivity或startActivityForResult启动另外的activity
• 通过View管理UI
• View绘制UI与处理UI event
• View可通过xml描述定义,也可在代码中生成。
• setContentView(R.layout.main)
• Android建议将UI设计和逻辑分离
• android UI设计类似swing,通过布局(layout)
public void setContentView(int layoutResID)public void setContentView(View view)public void setContentView(View view, ViewGroup.LayoutParams params)
最简单的就是你可以把Activity看成一个User Interface Program,原则上它会提供使用者一个交互式的接口功能,那一个UI只有一个activity吗?非也,举例来说:一个email程序,就可能 包含三个activity:邮件列表的activity、显示邮件内容的activity、写新邮件或回复邮件的activity。
所有的Activity在系统里由Activity堆栈所管理,当一个新的Activity被执行后,它将会被放置到堆栈的最顶端,并且变 成"running activity", 而先前的Activity原则上还是会存在于堆栈中,但它此时不会是在前景的情况,除非刚刚那个新的Activity离开。
当一个Activity在屏幕的最上层时(堆栈的最顶端),它就是属于active或running的状态。
• PAUSE:如果一个Activity失去焦点(focus)但还看得到它的画面(比如:一个新的Activity画面并不是全屏幕或者它是一个半透明的情况),那失去焦点的这个Activity则处在paused的状态。像这个失去焦点的Activity它还是完全活着的,并没有消失。(活着的意思是指,Activity自已本身所有的状态及数据都还是存在的,也跟窗口管理程序window manager保持连系着),像这种paused的activity,会在一种情况下消失,那就是当系统的内存不够用之时,系统会自动判断,把不重要的 activity移除。
• STOP:如果一个Activity被其它的Activity完全的遮住时,这个被遮的Activity处于stop的状态,它仍然保有全部的状态及数据,但因为它已不再被使用者看见,所以它的画面是被隐藏起来的(画面不需要更新),当系统内存不足时,这种stop状态的activity是最先被系统考虑拿来释放内存的。
当一个Activity处于pause或stop的状态时,系统可以要求Activity结束(finish)或直接移除(kill)它。当它需要再度呈现在使用者面前时,它必需要能完整的重新启动及回复先前的状态 。
Activity状态图如下图所示:
3. Intent
• 类似于消息、事件通知,它描述将被执行的操作;
• Intent构成:mAction、mData、mType、mPackage、mComponent、mCategories;
private String mAction; private Uri mData; private String mType; private String mPackage; private ComponentName mComponent; private int mFlags; private HashSet<String> mCategories; private Bundle mExtras; private Rect mSourceBounds; private Intent mSelector; private ClipData mClipData;
• 是Activity、Service、broadcast receiver之间的桥梁;
• 其使用场景如下:
// Interface to global information about an application environment.public abstract class Context { public abstract void startActivity(Intent intent); public abstract void sendBroadcast(Intent intent); public abstract ComponentName startService(Intent service); public abstract boolean bindService(Intent service, ServiceConnection conn,int flags);}
• 两类intent:
1) 显式:指定具体的目标组件处理
startActivity(new Intent(ActivityLifecycle.this, AnotherActivity.class));
2) 隐式:由系统接受并决定如何处理
startActivity(new Intent(Intent.ACTION_DIAL));
• 在AndroidManifest.xml中定义Activity、Service、Broadcast Receiver可接受的Intent,如下图所示:
• Intent filter: action、category、data
• 实例
4. Service
• 没有UI,启动之后一直运行于后台
• 例子:音乐播放器
• 与应用程序的其他模块(例如activity)一同运行于主线程中
• 通过startService或bindService创建Service
• 通过stopService或stopSelf终止Service
• 一般的,在activity中启动和终止service
• Service生命周期
5. Content Provider
• 什么是Content Provider?1) Content Provider 是Android应用程序的四大组成部分之一
2) 是android中的跨应用访问数据机制
• 为何需要Content Provider?
1) Android中每一个App的资源是私有的
2) App通过Content Provider和其他App共享私有数据
• 如何使用Content Provider?
通过ContentResolver访问:Context.getContentResolver()
• URI定位资源,例子如下:
content://contacts/people
content://call_log
• 类似关系数据库的访问方式(ContentResolver的方法),其方法如下:
delete(Uri url, String where, String[] selectionArgs)insert(Uri url, ContentValues values)query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)update(Uri uri, ContentValues values, String where,String[] selectionArgs)
5.1 Android的存储
一般的,应用程序的数据(包括文件)都是私有的,有以下四种持久存储方式:1) Preferences——类似properties,xml文件
2) Files
3) Database——SQLite
4) Network
6. Broadcast Receiver
• 接收和处理android的广播消息• Android的广播机制:
1) 系统事件——例如变换时区、电量低等
2) App发出广播消息:sendBroadcast
3) 广播消息:Intent
6.1 创建Broadcast Receiver
• 实现一个BroadcastReceiverpublic class MyAndroidReceiver extends BroadcastReceiver{ override onReceive(Context context, Intents Intents) { ... }}• 注册BroadcastReceiver
1) 在AndroidManifest.xml文件中进行注册
<receiver Android:name=“MyAndroidReceiver"> <intent-filter> <action Android:name="com.eoeAndroid.action.NEW_BROADCAST"/> </intent-filter></receiver>2) 在代码当中直接进行注册
IntentFilter filter = new IntentFilter("NEW_BROADCAST" );MyAndroidReceiver MyAndroidReceiver = new MyAndroidReceiver();registerReceiver(MyAndroidReceiver , filter);
6.2 Broadcast Receiver生命周期
• Broadcast receiver对象在onReceive返回后被销毁
• onReceive中不适合处理异步过程。例如弹出对话框与用户交互,可使用消息栏替代。
7. Android权限控制
• 在AndroidManifest.xml中描述一个app的权限,例如:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.app.myapp" > <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-persission android:name="android.permission.INTENET"/></manifest>• 权限举例(参考android.Manifest.permission)
- Android应用编程--基本概念
- Android应用基本概念
- Android图形编程基本概念
- Android图形编程基本概念
- Android基本概念: 应用, 任务, 进程, 和线程
- Android应用开发的基本概念(入门)
- Android学习笔记网络编程(1、基本概念)
- Symbian OS应用编程位置服务篇之基本概念
- Windows编程基础一:Windows应用的基本概念
- Android简明开发教程四:Android应用基本概念
- Android 网络编程应用
- Android 应用编程基础
- android 编程 应用代码
- Android应用界面编程
- android应用界面编程
- android基本概念
- Android基本概念
- android基本概念
- 修改系统默认值
- 『FFMPEG』ffmpeg-0.11.1的命令行解析与控制
- sed c\命令,IP地址和16进制数互相转换等一些精彩shell代码
- 从键盘任意输入数字a和b,并计算出a的b次方等于多少
- Yii - DAO
- Android应用编程--基本概念
- 如何实现标准TCODE的屏幕增强(HOWTO:Implement a screen exit to a standard SAP transaction)
- oracle plsql developer
- MARS的《Android学习路线》
- 配置文件读取(二)
- 用C模拟异常
- qt creator报错error while building deploying project
- Qt Qss使用
- 两个图形和矢量素材艺术品也可以巧妙地结合