android备忘录教学_Android学习备忘录

看的框架层相关的概念容易忘记,写个备忘录把理解的重点和遇到的疑惑记下。

Context:用Android最早接触到的一个类,使用非常非常广泛,在各个地方都要用到,像Toast、Dialog、new TextView()、getResource()之类的,经常就有个参数是Context。刚开始的时候对这个对象很疑惑,翻译过来是"上下文",不好理解。事实上,很多时候我们用到的Context,就是Activity本身。在View中get到的Context,其实就是这个View所处的Activity。Activity继承于ContextThemeWrapper,ContextThemWrapper继承于ContextWrapper,ContextWrapper继承于Context。另外,当使用Service的时候,也有一个Context,这是因为Service是继承于ContextWrapper的,这个Context就是Service本身。还有一个全局的Context:Application。通过getApplicationContext获得。

ContextImpl:虽然Activity继承于Context类,但是真正执行Context类方法的并不是Activity本身,而是ContextImpl类。该类也是继承于Context类,每个Activity内部都有一个ContextImpl对象,该对象是在Activity创建时创建的。装饰模式。

ActivityThread:一个非常非常重要的类。这个类管理着一个应用程序的生命周期,是应用程序的入口。每个应用程序对应一个ActivityThread对象,甚至于我们整个Android操作系统,也对应一个ActivityThread对象。同时,Activity、Service、Application都是在此类中创建。

Binder机制:跨进程通信机制,Android系统的核心所在。最早看到这个概念是在学习利用AIDL实现跨应用分享数据的时候,直到后来看了框架层相关的一些资料后才明白,这玩意在Android中扮演着多么重要的角色。在Android中,每启动一个应用,每打开一个Activity,都需要和Android系统做交互,确切地说,是和Android系统中的各个服务做交互,你的应用的每一步操作,都需要经过这些服务的授权于管理才能正常进行,而这些服务都处于另外一个进程中,通过Binder机制来进行交互。以startActivity为例,在这个过程中,应用程序首先将自己的这一动作通过binder机制传递给了ActivityManagerService(其实是调用了ActivityManagerService的某个方法),ActivityManagerService经过一系列操作后,同意了请求,并且在内部注册了这个要启动的Activity,然后又通过Binder机制调用了ActivtiyThread的创建Activity方法,ActivityThread这才开始实例化Activity类,然后回调这个Activity类的onCreate、onResume之类的接口。由于ActivityManagerService记录了每个启动的Activity,它就可以对整个系统所有的Activity做维护了。

AMS:ActivityManagerServcie的简称。管理所有Activity的服务,Activity的生命周期通过它来调度。

WindowManagerService:管理窗口(View)的服务,界面的绘制通过它调度,事件的触发由它传递给指定View.

Activity的attach方法:由于Activity实例是通过反射机制动态创建的,它的构造函数并真正进行初始化和赋值操作,而是在创建后通过attach方法进行初始化和必要的赋值操作。

方法如下

attach(Context context, ActivityThread aThread,

Instrumentation instr, IBinder token,intident,

Application application, Intent intent, ActivityInfo info,

CharSequence title, Activity parent, String id,

Object lastNonConfigurationInstance,Configuration config)

该方法是在ActivityThread中调用的,各参数详解如下

context:ContextImpl实例,前面说过Activity对于Context接口的真正实现都转到内部ContextImpl变量实现,就是在这里赋值。在创建Activity时会同时创建一个ContextImpl实例。

aThread:每个应用都对应一个ActivityThread实例,这里的aThread就是Activity所处应用对应的ActivityThread实例。由于Activity是在ActivityThread中创建和attach的,这个参数就是this。

instr:这个类型翻译过来时“检测仪器”,比较难懂是什么意思。但是在startActivity中是通过它来向AMS发送请求的,应该是个工具类,用以应用程序和系统服务的交互,会将其赋值给Activity内部的Instrumentation变量。另外这个变量是其实是ActivityThread的私有变量,实例化ActivityThread时创建的,所以一个应用内所有的Activity都共用一个Instrumentation变量。

token:IBinder对象,这个是最难理解的一点。如果对Binder机制做过了解的就会知道,IBinder对象实际上是另外一个进程内Binder服务的引用,调用它的方法就等于调用Binder服务的方法,Android系统内的各个Service,如AMS、WindowsManagerService、NotificationSerVice、LocationService等都是这么实现的,统称为服务。但更多时候,Binder机制不用于"服务"这类复杂功能的使用,而仅仅就是为了一个简单的跨进程调用,此处的IBinder对象就是如此。前面说过,startActivity时需要到AMS进行注册,注册成功后AMS该如何通知这个应用的ActivityThread创建Activity呢?实际上,在startActivity时,传递给AMS的参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为您介绍如何使用Android Studio实现备忘录功能。 1. 创建一个新项目 在Android Studio中创建一个新的项目,选择Empty Activity并为您的项目命名,然后单击“Finish”按钮。 2. 布局设计 使用Android Studio的布局编辑器设计备忘录界面。您可以添加一些文本视图来显示备忘录的标题和内容,还可以添加一些按钮来实现保存和删除备忘录。 3. 连接数据库 使用SQLite数据库来存储备忘录的数据。在MainActivity.java文件中,创建一个SQLiteOpenHelper类来帮助您创建和管理数据库。创建一个数据库表来存储备忘录的数据,包括标题和内容。 4. 添加保存和删除功能 在MainActivity.java文件中,添加保存和删除备忘录的功能。当用户单击保存按钮时,将备忘录的标题和内容插入到SQLite数据库中。当用户单击删除按钮时,从数据库中删除备忘录。 5. 显示备忘录列表 在MainActivity.java文件中,添加一个ListView来显示备忘录列表。使用CursorAdapter来从SQLite数据库中读取备忘录数据,并将其显示在ListView中。 6. 实现备忘录编辑 当用户单击备忘录列表中的一个项目时,启动一个新的Activity来编辑备忘录。在EditMemoActivity.java文件中,添加一个文本编辑器来允许用户编辑备忘录的标题和内容。当用户单击保存按钮时,将编辑的备忘录数据更新到SQLite数据库中。 以上就是实现Android备忘录的基本步骤。您可以根据需要对其进行扩展和改进。希望对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值