用戶至上用心服务CustomerFirstServiceForemost1Android开发2020年2月25日上海理想信息产业(集团)有限公司用戶至上用心服务CustomerFirstServiceForemostAndroid开发准备工作Android开发所需的软件及下载地址JDK1.6://://developer.android.com/sdk/index.htmlADT用戶至上用心服务CustomerFirstServiceForemostAndroid开发准备工作AndroidSDK安装1.下载AndroidSDK压缩包(如android-sdk_r20.0.3-windows.zip),解压缩后在文件夹中运行SDKManager.exe2.选择android版本,点击Installpackages下载SDK用戶至上用心服务CustomerFirstServiceForemostAndroid开发准备工作ADT安装以及配置1.安装ADT方法1:启动Eclipse,点击“Help”,选择“InstallNewSorftware...”,点击“Add”按钮,输入地址以及名称,点击“OK”按钮,然后按照提示完成后续操作。方法2:下载ADT压缩包,按照方法1点击“Add”按钮后,选择点击“Archive...”按钮,选择下载好的压缩包,点击“OK”按钮,然后按照提示完成后续操作2.配置ADT安装ADT之后,重启Eclipse,打开菜单“Window”,依次选择“Preferences”→“Android”,点击“Browse...”选择AndroidSDK路径用戶至上用心服务CustomerFirstServiceForemostAndroid应用程序构架src/java原代码存放目录gen/自动生成目录gen目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。res/资源(Resource)目录在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。AndroidManifest.xml功能清单文件这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。default.properties项目环境信息,一般是不需要修改此文件用戶至上用心服务CustomerFirstServiceForemostActivity生命周期Activity有三个状态:当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应用户操作的Activity。当它失去焦点但仍然对用户可见时,它处于暂停状态。即在它之上有另外一个Activity。这个Activity也许是透明的,或者没有完全覆盖全屏,所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但系统处于极低内存时仍然可以杀死这个Activity。完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息。然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:voidonCreate(BundlesavedInstanceState)voidonStart()voidonRestart()voidonResume()voidonPause()voidonStop()voidonDestroy()用戶至上用心服务CustomerFirstServiceForemostActivity生命周期这七个方法定义了Activity的完整生命周期。实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环:Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如,如果Activity有一个线程在后台运行从网络上下载数据,它会在onCreate()创建线程,而在onDestroy()销毁线程。Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。onStart()和onStop()方法可以随着应用程序是否为用户可见而被多次调用。Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause()方法。当Activity获得结果或者接收到新的Intent时会调用onResume()方法。关于前台生命周期循环的例子请见PPT下方备注栏。用戶至上用心服务CustomerFirstServiceForemostActivity生命周期用戶至上用心服务CustomerFirstServiceForemost添加新的Activity第一步:新建一个继承Activity的类,如:NewActivitypublicclassNewActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//这里可以使用setContentView(R.layout.xxx)显示某个视图....}}第二步:需要在功能清单AndroidManifest.xml文件中添加进上面Activity配置代码(红色部分):manifestxmlns:android==cn.sh.idealandroid:versionCode=1android:versionName=1.0applicationandroid:icon=@drawable/iconandroid:label=@string/app_name.....activityandroid:name=.NewActivityandroid:label=新activity的页面标题//application.../manifestandroid:name属性值的前面加了一个点表示NewActivity是当前包cn.itcast.action下的类,如果类在应用的当前包下,可以省略点符号,如果类在应用的子包下必须加点,如:NewActivity类在cn.itcast.action.user包下可以这样写:activityandroid:name=“.user.NewActivity“/用戶至上用心服务CustomerFirstServiceForemost打开新的Activity在一个Activity中可以使用系统提供的startActivity(Intentintent)方法打开新的Activity,在打开新的Activity前,你可以决定是否为新的Activity传递参数:第一种:打开新的Activity,不传递参数publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){.......Buttonbutton=(Button)this.findViewById(R.id.button);button.setOnClickListener(newView.OnClickListener(){//点击该按钮会打开一个新的ActivitypublicvoidonClick(Viewv){//新建一个intent,第一个参数为当前Activity类对象,第二个参数为你要打开的Activity类startActivity(newIntent(MainActivity.this,NewActivity.class));}});}}用戶至上用心服务CustomerFirstServiceForemost打开新的Activity第二种:打开新的Activity,并传递若干个参数给它:publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){.......button.setOnClickListener(newView.OnClickListener(){//点击该按钮会打开一个新的ActivitypublicvoidonClick(Viewv){Intentintent=newIntent(MainActivity.this,NewActivity.class)Bundlebundle=newBundle();//该类用作携带数据bundle.putString(name,参数);intent.putExtras(bundle);//附带上额外的数据startActivity(intent);}});}}在新的Activity中接收前面Activity传递过来的参数:publicclassNewActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){........Bundlebundle=this.getIntent().getExtras();Stringname=bundle.getString(name);}}用戶至上用心服务CustomerFirstServiceForemost得到新打开的Activity关闭后返回的数据使用系统提供的startActivityForResult(Intentintent,intrequestC