An Activity
一次活动
This afternoon my classmates and I went to help the drivers clean the buses. It was very cold and windy. But we didn't mind, and worked hard. Some of us cleaned the windows, and others swept the floor while singing and talking.
At that time we were in trouble. We had no water to use.There was something wrong with the tap. Li Ming sent for a repair man. After a while it was all right. We could go on working. It was very nice that the drivers called us "little Lei Feng"
We didn't finish the work until three p.m. When I got home, I felt very tired. After supper I went to bed and fell asleep quickly.
今天下午,我和同学们去帮助司机叔叔清洗车辆。天气很冷,还刮着风。但是我们并不在意,我们干得很起劲。一些同学擦玻璃,另外一些打扫地板。我们有说有笑的。
就在那时,出麻烦了。没有水了,原来是水龙头出毛病了。李明请来了修理工,一会儿就修好了。我们接着干了起来。最让人高兴的是,司机叔叔称我们是小雷锋。
直到下午三点,我们才完成任务。到家后我感觉累了。吃完晚饭,我就上床睡觉,而且很快就睡着了。
Someone said here Lei Feng comes in March and goes in April. I thought they were wrong. This afternoon the students of our class went to the bus stop to help the drivers clean the buses.
As soon as the bus stopped at the station, a group of students got on it. Some cleaned the windows, some swept the floor, and others cleaned the wall inside. We worked hard while talking and laughing. When we found some coins lying on the floor, we picked them up and gave them to the conductors or the drivers.They were very happy and said, "It is very nice of you."
When I got home, it was five o'clock. I felt a little tired, but I was very happy to have done a good deed.
有人说雷锋三月来,四月走,我认为他们说得不对。今天下午我们班同学去汽车站帮助司机叔叔清洗车辆。
汽车一进站,我们一组同学就登上车。一部分人擦玻璃,一部分人打扫地板,还有一部分人擦洗汽车的内壁。我们有说有笑,干得可起劲呢。我们发现地板上有几个硬币,就把它们捡起来,交给售票员或司机。他们高兴地说:"你们真是太好了。"
我回到家时,已经五点了。我感觉有点儿累,但我很高兴今天做了一件好事。
如何能面试成功,有一定的技巧,因为面试都有一个共性,那就是考察求职者的反应能力和临时语言组织能力,不过,这些都是可以训练的,而且有章可循的,只要你掌握了其中的技巧,便可百战百胜啦。 当然了解面试官的想法是非常必要的,本文对面试中经常出现的一些典型问题进行了归纳和整理,并给出相应的回答和参考。你无需过分关注分析的细节,关键是要从这些分析中“悟”出面试的规律及回答问题的思维方式,达到“活学活用”。 问题一:“请你自我介绍一下” 1、这是面试的必考题目。 2、介绍内容要与个人简历相一致。 3、表述方式上尽量口语化。 4、要切中要害,不谈无关、无用的内容。 5、条理要清晰,层次要分明。 6、事先最好以文字的形式写好背熟。 问题二:“谈谈你的家庭情况” 1、家庭情况对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位问该问题的主要原因。 2、简单地罗列家庭人口。 3、宜强调温馨和睦的家庭氛围。 4、宜强调父母对自己教育的重视。 5、宜强调各位家庭成员的良好状况。 6、宜强调家庭成员对自己工作的支持。 7、宜强调自己对家庭的责任感。 问题三:“你有什么业余爱好?”
1、业余爱好能在一定程度上反映应聘者的性格、观念、心态,这是招聘单位问该问题的主要原因。 2、最好不要说自己没有业余爱好。 3、不要说自己有那些庸俗的、令人感觉不好的爱好。 4、最好不要说自己仅限于读书、听音乐、上网,否则可能令面试官怀疑应聘者性格孤僻。 5、最好能有一些户外的业余爱好来“点缀”你的形象。 问题四:“你最崇拜谁?” 1、最崇拜的人能在一定程度上反映应聘者的性格、观念、心态,这是面试官问该问题的主要原因。 2、不宜说自己谁都不崇拜。 3、不宜说崇拜自己。 4、不宜说崇拜一个虚幻的、或是不知名的人。 5、不宜说崇拜一个明显具有负面形象的人。 6、所崇拜的人人最好与自己所应聘的工作能“搭”上关系。 7、最好说出自己所崇拜的人的哪些品质、哪些思想感染着自己、鼓舞着自己。 问题五:“你的座右铭是什么?” 1、座右铭能在一定程度上反映应聘者的性格、观念、心态,这是面试官问这个问题的主要原因。 2、不宜说那些医引起不好联想的座右铭。 3、不宜说那些太抽象的座右铭。 4、不宜说太长的座右铭。
一,系统引导bootloader 加电,cpu执行bootloader程序,正常启动系统,加载boot.img【其中包含内核。还有ramdisk】 二,内核kernel bootloader加载kernel,kernel自解压,初始化,载入built-in驱动程序,完成启动。 内核启动后会创建若干内核线程,在后装入并执行程序/sbin/init/,载入init process,切换至用户空间(user-space) 内核zImage解压缩 head.S【这是ARM-Linux运行的第一个文件,这些代码是一个比较独立的代码包裹器。其作用就是解压Linux内核,并将PC指针跳到内核(vmlinux)的第一条指令】首先初始化自解压相关环境(内存等),调用decompress_kernel进行解压,解压后调用start_kernel启动内核【start_kernel是任何版本linux内核的通用初始化函数,它会初始化很多东西,输出linux版本信息,设置体系结构相关的环境,页表结构初始化,设置系 统自陷入口,初始化系统IRQ,初始化核心调度器等等】,最后调用rest_init【rest_init 会调用kernel_init启动init进程(缺省是/init)。然后执行schedule开始任务调度。这个init是由android的./system/core/init下的代码编译出来的,由此进入了android的代码】。 三,Init进程启动 【init是kernel启动的第一个进程,init启动以后,整个android系统就起来了】 init进程启动后,根据init.rc 和init.
Android开发技术讲义之启动另一个 Activity 紧接着上一个练习,我们为上一个练习app添加一些代码,使之当我们点击send 按钮的时候能够启动另一个Activity。 任务 在文本框中输入消息,点击Send按钮,消息会显示在第二个Activity中。 对发送按钮进行响应 1.在res/layout目录中,编辑activity_my.xml 2.在
该属性的属性值"sendMessage",是当点击按钮的时候系统调用的方法名 3.在java/com.mycompanu.myfirstapp目录中,打开MyActivity.java文件 4.在MyActivity类中,添加sendMessage()方法 java/com.mycompany.myfirstapp/MyActivity.java 为了匹配android:onClick属性值,该方法必须满足: ●是public ●返回值为void ●有且仅有一个View作为参数 创建一个Intent 1.在MyActivity.java中的sendMessage()方法中,创建一个Intent启动一个名 为DisplayMessageActivity的Activity java/com.mycompany.myfirstapp/MyActivity.java 注意:此时对DisplayMessageActivity的调用会显示出错,我们这时可以先忽略错误 这里,Intent构造方法用到了两个参数: ●Context作为第一个参数(这里是this,因为Activity是Context的子类) ●第二个参数为系统发送Intent的目标,为某应用组件的Class 2.在本文件的前面,引入Intent类: java/com.mycompany.myfirstapp/MyActivity.java
每个Androi d应用启动之后都会出现一个Spl ash启动界面,显示产品的LOGO、公司的LOGO或者开发者信息。如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。 1.制作Splash界面 突出产品LOGO,产品名称,产品主要特色; 注明产品的版本信息; 注明公司信息或者开发者信息; 背景图片,亦可以用背景颜色代替; 2.处理后台资源 大多数的Splash界面都是会等待一定时间,然后切换到下一个界面; 其实,在这段时间里,可以对系统状况进行检测,比如网络是否通,电源是否充足; 或者,预先加载相关数据; 为了能让启动界面展现时间固定,需要计算执行以上预处理任务所花费的时间,那么:启动界面SLEEP的时间=固定时间-预处理任务时间; 思路有两个,一个是用两个Activity来做,一个用来做启动画面,另一个是主页面;还可以用一个Activity来做,程序启动时显现启动画面,当启动完成后,它会被隐藏来。 方法一:两个Activity,通过线程延迟指定的时间再执行Activity的跳转,我们需要建立两个Activity,一个是SplashActivity,用来做启动画面。另一个是HelloWo rldActivity。在这里只是说明如何来做启动画面,所以就不详细来完成Activity了。 核心代码: package com.demo.app; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; public class SplashActivity extends Activity { private final int SPLASH_DISPLAY_LENGHT = 6000; // 延迟六秒 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.sodocs.net/doc/149791910.html,yout.splash); new Handler().postDelayed(new Runnable() { public void run() { Intent mainIntent = new Intent(SplashActivity.this, HelloWorldActivity.class); SplashActivity.this.startActivity(mainIntent); SplashActivity.this.finish(); } }, SPLASH_DISPLAY_LENGHT); }
荟萃精品11条:考研复试英语自我介绍不再愁 自我介绍英语,英文自我介绍 Sample1: My name is ________. I am graduated from ________ and major in ________. There are ________ people in my family. My father works in a computer company. And my mother is a housewife. I am the youngest one in my family. In my spare time, I like to read novels. I think reading could enlarge my knowledge. In addition to reading, I also like to play PC games. A lot of grownups think playing PC games hinders the students from learning. But I think PC games could motivate me to learn something such as English or Japanese. My favorite course is English because I think it is interesting to say one thing via different sounds. I wish my English could be improved in the next four years and be able to speak fluent English in the future. Sample2: I am ________. I was born in ________. I graduate from ________ and major in English. I started learning English since I was 12 years old. My parents have a lot of American friends. That’s why I have no problem communicatin g with Americans or others by speaking English. In my spare time, I like to do anything relating to English such as listening to English songs, watching English movies or TV programs, or even attending the activities held by some English clubs or institutes. I used to go abroad for a short- term English study. During that time, I learned a lot of daily life English and saw a lot of different things. I think language is very interesting. I could express one substance by using different sounds. So I wish I could study and read more English literatures and enlarge my knowledge. Sample3: My name is ________. There are 4 people in my family. My father is a Chemistry teacher. He teaches chemistry in ________ senior high school. My mother is an English teacher. She teaches English in the university. I have a younger brother,
activiti流程开发指南 ?一、BPMN ?二、activiti主要接口 ?三、如何实现一个业务流程 ?四、如何管理所有流程与实例 ?五、开发流程 ?六、api 一、BPMN 1. 什么是BPMN 首先BPMN规范是由标准组织BPMI发布的.BPMN 1.0规范发布于2004年5月。此规范展示了BPMI组织两年多的努力成果。BPMN的主要目标就是要提供被所有业务用户理解的一套标记语言,包括业务分析者、软件开发者以及业务管理者与监察者。BPMN还将支持生成可执行的 BPEL4WS语言。所以,BPMN在业务流程设计与流程实现之间搭建了一条标准化的桥梁。 BPMN定义了业务流程图,其基于流程图技术,同时为创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。 2. BPMN基础 业务流程图由一系列的图形化元素组成。这些元素简化了模型的开发,且业务分析者看上去非常熟悉。这些元素每个都有各自的特性,且与大多数的建模器类似。比如,活动是矩形,条件是菱形。应该强调的是:开发BPMN的动力就是为了在创建业务流程模型时提供一个简单的机制,同时又能够处理来自业务流程的复杂性。要处理这两个矛盾的需求的方法就是将标记的图形化方面组织分类为特定的类别。这里提供标记类别中的一小部分,以便业务流程图的读者可以简单地识别出元素的基本类型从而理解图形。以下是四种基本的类型: 1)流对象 2)连接对象 3)泳道
4)人工信息 BPMN2.0概要:https://www.sodocs.net/doc/149791910.html,/workclass/201206272.asp 二、activiti主要接口 ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); RepositoryService repositoryService = processEngine.getRepositoryService(); TaskService taskService = processEngine.getTaskService(); ManagementService managementService = processEngine.getManagementService(); IdentityService identityService = processEngine.getIdentityService(); HistoryService historyService = processEngine.getHistoryService(); FormService formService = processEngine.getFormService(); ProcessEngines.getDefaultProcessEngine()会在第一次调用时初始化并创建一个流程引擎,以后再调用就会返回相同的流程引擎。使用对应的方法可以创建和关闭所有流程引擎:ProcessEngines.init()和ProcessEngines.destroy()。 ProcessEngines会扫描所有activiti.cfg.xml和activiti-context.xml文件。对于activiti.cfg.xml文件,流程引擎会使用Activiti的经典方式构建: ProcessEngineConfiguration.createProcessEngineConfigurationFromInputStream (inputStream).buildProcessEngine(). 对于activiti-context.xml文件,流程引擎会使用Spring方法构建:先创建一个Spring的环境,然后通过环境获得流程引擎。
Android系统架构 Android目录结构 1.src目录 src目录中存放的是该项目的源代码,其内部结构会根据用户所声明的包自动组织,该
目录的组织方式为src/com/jiang/Main.java,程序员在项目开发过程中,大部分时间是对该目录下的源代码文件进行编写。 2.gen目录 该目录的文件是ADT自动生成的,并不需要人为地去修改,实际上该目录下只定义了一个R.java文件,该文件相当于项目的字典,项目中用户界面、字符串、图片、声音等资源都会在该类中创建其唯一的ID,当项目中使用这些资源时,会通过该类得到资源的引用。 3.Android2.2 该目录中存放的是该项目支持的JAR包,同时还包含项目打包时需要的META-INF目录。 4.assets目录 该目录用于存放项目相关的资源文件,例如文本文件等,在程序中可以使用”getResources.getAssets().open(“text.txt”)”得到资源文件的输入流InputStream对象。 5.res目录 该目录用于存放应用程序中经常使用的资源文件,包括图片、声音、布局文件及参数描述文件等,包括多个目录,其中以drawable开头的三个文件夹用于存储.png、.9.png、.jpg 等图片资源。layout文件夹存放的是应用程序的布局文件。raw用于存放应用程序所用到的声音等资源。value存放的则是所有XML格式的资源描述文件,例如字符串资源的描述文件strings.xml、样式的描述文件style.xml、颜色描述文件colors.xml、尺寸描述文件dimens.xml,以及数组描述文件arrays.xml等。 6.AndroidManifest.xml文件 该文件为应用程序定义了全局的配置信息。这个文件列出了应用程序所提供的功能,包括四大组件、版本、权限等等。在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。 android:versionCode是给设备程序识别版本(升级)。 android:versionName是给用户看的。 7.default.properties文件 该文件为项目的配置文件,不需要认为改动,系统会自动为其进行管理,其中主要描述了该项目的版本等信息。
android面试题目及其答案大全 1,++i和i++ 区别 2,makefile文件代码,写代码 3,隐藏与重写的区别 4,linux 基本命令使用如:如何查询帮助文档(man),如何查处文件(fiind),常用命令5,进程间通信有几种,效率如何 6、什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗? 7,tcp/ip 有几层 8、一条最长的短信息约占多少byte? 9,p2p 和SMTP分别在哪层 10、android中的动画有哪几类,它们的特点和区别是什么? 11,多态概念(父类引用子类参数) 12、handler机制的原理 13,java 写1+N的和 14,数据结构与算法如排序,二叉树 15,MVC概念(为什么有DAO层,什么作用) 16,GC回收机制 17、说说mvc模式的原理,它在android中的运用 18,android项目自述 19,java 的进程与线程维护 20、Activity的生命周期 21,N*N 打印出来的样子是(例如N=4) 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 22,linux 末行,输入,命令三个模式 23、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 24,android 四层架构分别的作用(android系统框图) 25、sim卡的EF 文件有何作用 26,android四大组件,生命周期,onpause()与onstop()的区别 27,UMI建模概念 28,C语言打印N*N数组,规律如下: 2维 1 2 3 4 3维 1 2 3 8 9 4 7 6 5 4维 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
Android讲解 第一讲 1.Android概述 2.开发环境的搭建 3.创建第一个Android应用程序 4.Android程序的结构分析 1. src 毫无疑问,src 目录是放置我们所有Java 代码的地方,它在这里的含义和普通Java项目下的src 目录是完全一样的,展开之后你将看到我们刚才创建的HelloWorldActivity文件就在里面。 2. gen 这个目录里的内容都是自动生成的,主要有一个R.java 文件,你在项目中添加的任何资源都会在其中生成一个相应的资源id。这个文件永远不要手动去修改它。 3. assets 这个目录用得不多,主要可以存放一些随程序打包的文件,在你的程序运行时可以动态读取到这些文件的内容。另外,如果你的程序中使用到了WebView 加载本地网页的功能,所有
网页相关的文件也都存放在这个目录下。 4. bin 这个目录你也不需要过多关注,它主要包含了一些在编译时自动产生的文件。其中会有一个你当前项目编译好的安装包,展开bin 目录你会看到HelloWorld.apk,把这个文件拷到手机上就可以直接安装了。 5. libs 如果你的项目中使用到了第三方Jar 包,就需要把这些Jar 包都放在libs 目录下,放在这个目录下的Jar 包都会被自动添加到构建路径里去。你可以展开上图中Android 6.0、Android Private Libraries、Android Dependencies 这些库,其中显示的Jar 包都是已经被添加到构建路径里的。 6. res 这个目录下的内容就有点多了,简单点说,就是你在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下,前面提到的R.java 中的内容也是根据这个目录下的文件自动生成的。当然这个目录下还有很多的子目录,图片放在drawable 目录下,布局放在layout 目录下,字符串放在values 目录下,所以你不用担心会把整个res 目录弄得乱糟糟的。 7. AndroidManifest.xml 这是你整个Android 项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册。另外还可以在这个文件中给应用程序添加权限声明,也可以重新指定你创建项目时指定的程序最低兼容版本和目标版本。由于这个文件以后会经常用到,我们用到的时候再做详细说明。 8. project.properties 这个文件非常地简单,就是通过一行代码指定了编译程序时所使用的SDK 版本。我们的HelloWorld 项目使用的是API 14,你也可以在这里改成其他版本试一试。 详解项目中的资源 所有以drawable 开头的文件夹都是用来放图片的,所有以values 开头的文件夹都是用来放字符串的,layout 文件夹是用来放布局文件的,menu 文件夹是用来放菜单文件的。怎么样,是不是突然感觉清晰了很多?之所以有这么多drawable 开头的文件夹,其实主要是为了让程序能够兼容更多的设备。在制作程序的时候最好能够给同一张图片提供几个不同分辨率的副本,分别放在这些文件夹下,然后当程序运行的时候会自动根据当前运行设备分辨率的高低选择加载哪个文件夹下的图片。当然这只是理想情况,更多的时候美工只会提供给我们一份图片,这时你就把所有图片都放在drawable-hdpi 文件夹下就好了。
Activity中 在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置 Activity有四种加载模式: ?standard ?singleTop ?singleTask ?singleInstance 设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性:
Android开发中常见的一些问题面试专题 1.ListView 中图片错位的问题是如何产生的? 2.混合开发有了解吗? 3.知道哪些混合开发的方式?说出它们的优缺点和各自使用场景?(解答:比如:RN,weex, 4.H5,小程序,WPA等。做Android的了解一些前端js等还是很有好处的); 5.屏幕适配的处理技巧都有哪些? 6.服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达? 7.动态布局的理解 8.怎么去除重复代码? 9.画出Android 的大体架构图 10Recycleview和ListView的区别 11. ListView图片加载错乱的原理和解决方案 ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View)。ListView通过adapter的getView函数获得每行的item。 滑动过程中 1)如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存; 2)获取滑入屏幕的行item之前会先判断缓存中是否有可用的item,如果有,做为convertView参数传递给adapter的getView。 出现的问题: 1)行item图片显示重复,当前行item显示了之前某行item的图片。 比如ListView滑动到第2行会异步加载某个图片,但是加载很慢,加载过程中listView已经滑动到了第14行,且滑动过程中该图片加载结束,第2行已不在屏幕内,根据上面介绍的缓存原理,第2行的view可能被第14行复用,这样我们看到的就是第14行显示了本该
属于第2行的图片,造成显示重复。 2)行item图片显示闪烁 如果第14行图片又很快加载结束,所以我们看到第14行先显示了第2行的图片,立马又显示了自己的图片进行覆盖造成闪烁错乱。 解决方法 通过上面的分析我们知道了出现错乱的原因是异步加载及对象被复用造成的,如果每次getView能给对象一个标识,在异步加载完成时比较标识与当前行item的标识是否一致,一致则显示,否则不做处理即可。 12.动态权限适配方案,权限组的概念 13.Android系统为什么会设计ContentProvider? 14.下拉状态栏是不是影响activity的生命周期 15.如果在onStop的时候做了网络请求,onResume的时候怎么恢复? 16.Bitmap 使用时候注意什么? 17.Bitmap的recycler() 18.Android中开启摄像头的主要步骤 19.ViewPager使用细节,如何设置成每次只初始化当前的Fragment,其他的不初始化? 20.点击事件被拦截,但是想传到下面的View,如何操作? 21.微信主页面的实现方式 22.微信上消息小红点的原理 23.CAS介绍
A n d r o i d应用程序绑定服务b i n d S e r v i c e 的过程源代码分析
Android应用程序组件Service与Activity一样,既可以在新的进程中启动,也可以在应用程序进程内部启动;前面我们已经分析了在新的进程中启动Service的过程,本文将要介绍在应用程序内部绑定Service的过程,这是一种在应用程序进程内部启动Service的方法。 在前面一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划中,我们就曾经提到,在Android系统中,每一个应用程序都是由一些Activity和Service组成的,一般Service运行在独立的进程中,而Activity有可能运行在同一个进程中,也有可能运行在不同的进程中;在接下来的文章中,Android系统在新进程中启动自定义服务过程(startService)的原理分析一文介绍了在新的进程中启动Service的过程,Android应用程序启动过程源代码分析一文介绍了在新的进程中启动Activity的过程,而Android应用程序内部启动Activity过程(startActivity)的源代码分析一文则介绍了在应用程序进程内部启动Activity的过程;本文接过最后一棒,继续介绍在应用程序进程内部启动Service的过程,这种过程又可以称在应用程序进程内部绑定服务(bindService)的过程,这样,读者应该就可以对Android应用程序启动Activity和Service有一个充分的认识了。 这里仍然是按照老规矩,通过具体的例子来分析Android应用程序绑定Service的过程,而所使用的例子便是前面我们在介绍Android系统广播机制的一篇文章Android系统中的广播(Broadcast)机制简要介绍和学习计划中所开发的应用程序Broadcast了。 我们先简单回顾一下这个应用程序实例绑定Service的过程。在这个应用程序的MainActivity的onCreate函数中,会调用bindService来绑定一个计数器服务CounterService,这里绑定的意思其实就是在MainActivity内部获得CounterService的接口,所以,这个过程的第一步就是要把CounterService 启动起来。当CounterService的onCreate函数被调用起来了,就说明CounterService已经启动起来了,接下来系统还要调用CounterService的onBind函数,跟CounterService要一个Binder对象,这个Binder对象是在CounterService内部自定义的CounterBinder类的一个实例,它继承于Binder类,里面实现一个getService函数,用来返回外部的CounterService接口。系统得到这个Binder对象之后,就会调用MainActivity在bindService函数里面传过来的ServiceConnection实例的onServiceConnected函数,并把这个Binder对象以参数的形式传到onServiceConnected函数里面,于是,MainActivity就可以调用这个Binder对象的getService函数来获得CounterService的接口了。 这个过程比较复杂,但总体来说,思路还是比较清晰的,整个调用过程为MainActivity.bindService->CounterService.onCreate->CounterService.onBind- >MainActivity.ServiceConnection.onServiceConnection->CounterService.CounterBinder.getService。下面,我们就先用一个序列图来总体描述这个服务绑定的过程,然后就具体分析每一个步骤。
Activity四种启动模式 一、启动模式介绍 启动模式简单地说就是Activity启动时的策略,在Android Manifest.xml中的标签的android:launchMode属性设置; 启动模式有4种,分别为standard、singleTop、singleTask、singleInstance; 讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1-->Activity2-->Activity3,则任务栈为: 二、启动模式 (1)standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;
(2)singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例; (3)singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;
(4)singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;
SingTask的应用: 可以用来退出整个应用。 将主Activity设为SingTask模式,然后在要退出的Activity中转到主Activity,然后重写主Activity的onNewIntent函数,并在函数中加上一句finish。 附: 退出单个Activity方法: 调用finish 杀死该进程:killprocess(Process.mId) 终止正在运行的虚拟机:system.exit() 退出整个应用: 制造抛异常导致整个程序退出 将所有的activity放入到一个list中,然后在需要退出的时候,将所有的activity,finish掉 通过广播来完成退出功能 通过广播来完成退出功能,具体实现过程是这样的:在每个Activity创建时(onCreate时)给Activity注册一个广播接收器,当退出时发送该广播即可。大概的代码如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); IntentFilter filter = new IntentFilter(); filter.addAction("finish");
The 7 Interview Questions You Must Ask 面试中必须问的七个问题 There are no magic bullets when it comes to job interview questions, but the way you structure your queries is important: It's the interviewer's job to create a framework for the discussion and prevent it from running off the rails. Every company's needs are different, but a good basic strategy is to ground the interview in questions about past job performance. Then throw in some situational questions to evaluate practical decision making, and learn a little bit about how the job fits in with a candidate's biography. Question #1: "How about those Yankees?" Purpose: Develop the rapport needed to get the interview off the ground. Every interview should begin with an icebreaker. It helps nervous applicants calm down and builds a sense of trust. If you have a 45-minute interview, you should spend at least the first five minutes trying to connect on a neutral topic. Make the person feel at ease and you'll solicit better information—and much more honest responses. Alternate Version 1: "Did you go to the industry conference last week?" Alternate Version 2: "Were you affected by the heat wave/cold snap?" Question #2: "Talk about a time when you had to overcome major obstacles." Purpose: Get a clear picture of the candidate's past performance. Variations on this question should actually comprise your next several questions. Don't hesitate to guide the candidate through the variety of tasks (both tangible and theoretical)
EOS工作流引擎工作原理 作者:Gocom注册用户dogreet(李国生) 1. 工作流基础知识 ……略 2. EOS工作流引擎工作原理 本文是我在工作之余写的一点我对EOS工作流的了解,我的理解不一定全是对的,可能会与引擎的真正的面目有出入。所以只能提供给大家一点参考。 2.1. EOS工作流引擎核心调度算法 EOS工作流最重要的组成部分是它的核心调度算法,在我们没有深入研究它的工作原理之前我们认为它的工作原理是在工作项,活动和流程实例对象上加了一些标志位来驱动流程的运转。认为其引擎完全是个由数据库来驱动流程的引擎(安徽二期的工作流平台好象就是以库表来驱动流程的运转),其实它是由事件来驱动流程运转的引擎,数据库只是把引擎运转前后的状态持久化。在我近来在工作之余对其引擎的工作原理进行跟踪才弄明白在EOS帮助文档上介绍的“事件驱动”的工作流引擎。 2.1.1. EOS工作流引擎的事件类型
以上的每个事件都是原子的不可分割的。其中一系列事件的集合通过EOS引擎事件调度机制实现我们平时在工作中经常遇到的如启动流程,结束工作项等等。(在事件类型类中EOS定义了29种事件,但在事件工厂类中EOS定义了26种类型。) 1.1.1. EOS工作流事件调度机制 EOS事件的调度服务是在工作流引擎初始化时通过服务工厂类加载到内存中(ServiceFactory.initEventService())。用户可以通过服务工厂类(ServiceFactory)取得JVM的唯一事件服务实例进行事务调度。所有的事件程序入口都是事件类(EventService),这个类其实是个接口,其有两个实现类,一个是单线程的实现类SingleThreadEventService (在实现代码中其实不是单线程,而是单例的对象),一个是多线程的实现类MulThreadThreadSvc,(其实现方式不在这里详细说明,多线程的类后面又跟了一大堆的线程池实现代码),在事件服务类中有一个属性类是WFEventDisposer,这个类包含了事