中山公司网站建设,wordpress 4.8中文版,seo教程seo优化,wordpress提醒1.Android可视化界面结构: 一个Android应用的可视化界面最底层是Activity,在他之上是一个Window对象,在window之上通常是布局容器,再上面才是用户直接交互的组件(按钮,文本框)交互组件(UI控件)--布局容器(layout)---Window对象---Activity2.Activity生命周期 …1.Android可视化界面结构: 一个Android应用的可视化界面最底层是Activity,在他之上是一个Window对象,在window之上通常是布局容器,再上面才是用户直接交互的组件(按钮,文本框)交互组件(UI控件)--布局容器(layout)---Window对象---Activity2.Activity生命周期 Activity是以栈的形式管理的,当前活动的Activity位于栈顶,其他的Activity则处于非活动状态. Activiy生命周期中的4个重要状态 活动 处于栈顶位置,用户进行交互 暂停 可见但失去焦点,用户不能进行交互 停止 不可见 销毁 被系统和进程Kill掉 细分Activity生命周期为3个关键的嵌套子周期: 首尾:第一次调用onCreate()到最后调用onDestroy().对应的做全局的初始化,以及最后的释放. 可见但不一定交互:从调用onStart()到对应调用一次onStop(),用户可以在屏幕上看到Activity但不一定能与之交互,可以在这期间维护向用户显示的资源. onReSart()被停止的Activity重新被启动. 活动周期:从调用onResume()到对应的onPause(),活动的activtiy与用户进行交互3.控制Activity的生命周期 用户很多常见的操作都会引起Activity的暂停,停止,结束甚至启动多个程序版本,对于程序而言,这些都应该是要尽量避免的. 3.1强制执行单任务模式: 比如当程序执行跳转操作之后再次的启动,可能会在手机上产生多个Activity实例(系统自动Kill多余的实例或者引发异常). 那么我们为了保证任何时候,每个Activity都只有一个正在运行的实例,只需要在AndroidManifest.xml的Activity元素中加入以下代码: android:lauchModesingleInstance 如果想要限制一个程序中只有一个activity实例,只需要在AndroidManifest.xml的Activity元素中加入以下代码: android:lauchModesingleTask 3.2强制手机屏幕方向 手机屏幕方向改变时,Activity被结束然后再重新启动,这样导致程序丢失了当前的状态. 那么有一种方案是禁止切换应用程序的视图(屏幕方向的切换),在AndroidManifest.xml的Activity元素中加入以下代码: android:screenOrientationportrait(纵向)或者android:screenOrientationlandscape(横向) 问题还没有完全解决,以上代码只是将程序始终保存在指定的方向,并不能防止Activity的重新启动的一系列操作. 要实现不重启,还需要在AndroidManifest.xml中设置 android:configChangesorientation|keyboradHidden(手机屏幕方向,键盘滑出时触发),事件为onConfigurationChanged(Configuration newConfig) 3.3保存和恢复Activity的信息 手机屏幕方向改变时,Activity被结束然后再重新启动,这样导致程序丢失了当前的状态. 我们可以保存当前Activity的信息,然后再重启是恢复之前的信息 实现这一想法就是:onSaveInstanceState和onRestoreInstanceState 原理:当一个Activty即将被Kill时,通过重写onSaveInstanceState来保存需要保存的状态的相关信息,当重新创建该Activity后,之前onSaveInstanceState保存的状态信息将 通过Bundle传递给onCreate方法,然后就可以利用onRestoreInstanceState方法来保存恢复之前的状态信息了. 值得注意一下: 触发onSaveInstanceState的几个操作:(实际Activity销毁)1.当用户按下HOME键 2.长按HOME 3.按下电源按键,屏保状态 4.屏幕方向切换(不设置configChanges) Note:除了第4种,其他的3种情况,onSaveInstanceState和onRestoreInstanceState不一定是被成对调用的.4.Activity的交互 4.1启动另一个Activity(跳转) 1.定义一个Intent,并为该Intent指定即将被启动的Activity Intent newActivityIntentnew Intent(this,NewActivity.class); 2.调用Intent的startActivity方法启动并跳转到新的Activity startActivity(neActivityIntent); 3.当新的Activity执行完毕之后,调用finish方法结束当前Activity,并将控制权交回给调用它的Activity. finish(); 4.在ActivityManifest.xml中声明新的Activity(注册) 4.2启动另一个Activity并返回结果 1.定义一个Intent,并为该Intent指定即将被启动的Activity 2.调用startActivityForResult(Intent intent,int requestCode)跳转并标记requestCode 3.重写onActivityResult(int requestCode,int resultCode,intent data)解析返回的数据 4.在另一个Activity中调用setResult(RESULT_OK,backintent) Note:在Activity之间传递数据Bundle:一个类型安全的容器,只能存储基本数据类型或基本类型的数组,如string,int,byte和boolean等 代码: string资源文件: ?xml version1.0 encodingutf-8?
resourcesstring nameapp_nameSetupNewActivity/stringstring namehello_worldHello world!/stringstring nameStartActivitiy这是启动页面的Activity/stringstring nameNewActivity启动新的Activity/stringstring nameEndNewActivity结束当前Activity/stringstring nameShowNewActivity这是新启动的Activity界面/string
/resources 主页面:activity_lauch.xml RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context${relativePackage}.${activityClass} TextView android:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textstring/StartActivitiy/Button android:textstring/NewActivityandroid:idid/SetupNewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:gravitycenter_horizontalandroid:layout_marginTop20dp/
/RelativeLayout 跳转页面:activity_new.xml RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context${relativePackage}.${activityClass} TextViewandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:textstring/ShowNewActivity/TextViewButtonandroid:textstring/EndNewActivityandroid:idid/Endandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:gravitycenter_horizontalandroid:layout_marginTop20dp/Button
/RelativeLayout LauchActivity.java: package com.YZR.setupnewactivity;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class LauchActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_lauch);Button setupButton(Button)findViewById(R.id.SetupNew);setupButton.setOnClickListener(new OnClickListener(){Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubsetupNewActivity();}});}private void setupNewActivity() {// TODO Auto-generated method stubIntent newActivityIntentnew Intent(LauchActivity.this,NewActivity.class);startActivity(newActivityIntent);}
} NewActivity.java package com.YZR.setupnewactivity;import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class NewActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_new);Button endButton(Button)findViewById(R.id.End);endButton.setOnClickListener(new OnClickListener() {Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinish();}});}
} AndroidManifest.xml: ?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.YZR.setupnewactivityandroid:versionCode1android:versionName1.0 uses-sdkandroid:minSdkVersion8android:targetSdkVersion21 /applicationandroid:allowBackuptrueandroid:icondrawable/ic_launcherandroid:labelstring/app_nameandroid:themestyle/AppTheme activityandroid:nameLauchActivityandroid:labelstring/app_name intent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityactivityandroid:nameNewActivityandroid:labelstring/app_nameintent-filteraction android:nameandroid.intent.action.VIEW /category android:nameandroid.intent.category.DEFAULT //intent-filter/activity/application/manifest 下一节再介绍传值跳转. 仅供学习之用. END ?xml version1.0 encodingutf-8?resources string nameapp_nameSetupNewActivity/string string namehello_worldHello world!/string string nameStartActivitiy这是启动页面的Activity/string string nameNewActivity启动新的Activity/string string nameEndNewActivity结束当前Activity/string string nameShowNewActivity这是新启动的Activity界面/string/resources转载于:https://www.cnblogs.com/Francis-YZR/p/4892595.html