Android开发-1-创新互联

Android开发基本知识-活动篇
  • 基本项目结构
  • 活动
  • 返回栈
  • 活动生命周期
    • 活动状态
    • 生命周期
    • 生存期
  • 活动创建
  • 活动切换
    • 创建Intent
    • 跳转至新活动
    • 结束当前活动,返回上一级
  • Fragment

在做网站、网站设计过程中,需要针对客户的行业特点、产品特性、目标受众和市场情况进行定位分析,以确定网站的风格、色彩、版式、交互等方面的设计方向。成都创新互联公司还需要根据客户的需求进行功能模块的开发和设计,包括内容管理、前台展示、用户权限管理、数据统计和安全保护等功能。基本项目结构
--app
  --manifests
     --AndroidManifest.xml(项目启动文件,包括项目基本信息及所有活动注册信息)
  --java
     --.../XXXActivity.java(活动实体类)
  --res(资源文件夹)
     --layout
        --activityXXX.xml(活动布局文件)
--gradle scripts
  --build.gradle(project)(部署文件,包括SDK版本及依赖等)
活动

通俗来讲,一个页面(不一定全屏)相当于一个活动,每个活动具有活动周期,页面切换即是活动切换;活动中有各种控件,每个控件可以提供不同的功能(如按钮、文本框)。
每个活动对应一个实体类和一个布局文件,在实体类的onCreate方法中需要加载布局文件,在布局文件中添加的控件可通过id等方式被实体类调用,从而实现页面的交互。

返回栈

安卓基本的管理单位是活动,当一个活动被启动时,将会被入栈;当活动被销毁时,会被出栈。即:当前页面所显示的活动为当前栈顶的活动。
返回栈不一定只有一个,但页面激活顺序只与当前返回栈相关,如:

  1. 活动1启动,入栈1
  2. 通过活动1启动活动2,活动2入栈2,当前页面显示栈2的栈顶活动2
  3. 通过活动2启动活动3,活动3入栈1,当前页面显示栈1的栈顶活动3

在这种情况下,栈1从底到顶为活动1、活动3,栈2只有活动2,那么从活动3选择返回,栈1将会弹出活动3,当前页面显示栈1的栈顶活动1;而从活动1选择返回,栈1将会弹出活动1,此时栈1已空,页面将切换到栈2的栈顶活动2。

活动生命周期

(此部分参考博客Android开发 入门篇(一))

活动状态

每个活动具有四种状态:运行状态、暂停状态、停止状态、销毁状态。

  1. 运行状态:处于返回栈栈顶的活动处于运行状态
  2. 暂停状态:活动不处于栈顶但是仍然可见的时候,处于暂停状态(不是所有活动都必须占满全部屏幕,比如弹出的对话框就只占据部分屏幕)
  3. 停止状态:活动不处于栈顶且完全不可见的时候就处于停止状态,系统会保留相应状态和成员变量,但是不可靠,如果内存不够用的时候,这部分将被回收
  4. 销毁状态:当一个活动从栈顶移除后变成销毁状态,系统会优先回收这种状态的活动(通过返回键或finish()方法销毁)
生命周期

Activity类中定义了七个回调方法,覆盖了生命周期中的每一个环节

  • onCreate():在活动第一次被创建的时候调用,实现布局的加载、事件绑定等
  • onStart():在活动由不可见变为可见的时候调用
  • onResume():在活动准备好和用户进行交互的时候调用,此时活动一定处于栈顶,且处于运行状态
  • onPause():在系统准备启动或恢复另一个活动时调用。一般在这里需要释放一些消耗cpu的资源,保存一些关键数据,要快,否则可能会影响新活动
  • onStop():在活动完全不可见的时候调用。若启动的新活动是不会使旧活动不可见的活动(类似对话框的活动),则会使用onPause(),onStop()不会执行
  • onDestroy():在活动被销毁之前调用,之后活动会变为销毁状态
  • onRestart():活动由停止状态变为运行状态的时候调用该方法,即活动被重新启动
生存期
  • 完整生存期:即onCreate()和onDestroy()之间所经历的是完整生命期,在onCreate()中进行初始化操作,在onDestroy()中进行内存的释放
  • 可见生存期:在onStart()和onStop()之间所经历的是可见生命期。在这个期间活动都是可见的,即便某些无法交互的时候也是可见的。应在onStart()中完成资源的加载,onStop()中进行资源的释放
  • 前台生存期:在onResume()和onPause()之间所经历的是前台生存期。在这个期间活动总是处于运行状态,可以和用户进行交互

活动生命周期

活动创建
  • 创建活动实体并加载页面布局
public class MainActivity extends AppCompatActivity {@Override
   protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main); 
   }
}

其中,页面布局引用方法为:R.res目录下页面布局文件夹.页面布局文件名,如例子中R.layout.activity_main对应:
在这里插入图片描述

  • 在AndroidManifest中注册活动:

其中:android.name应为活动实体类的路径,因为外部有package,可以简写;android.exported为Android12添加的必写标签,之前版本可以不写;intent-filter标签中用于进行活动切换,后文再说。
activity标签位置:

...
活动切换

活动切换分为两种:创建新活动、返回上一活动。
活动切换通过intent进行。

  • 创建新活动的intent
    例如我要从FirstActivity切换到SecondActivity,SecondActivity的注册信息如下:
创建Intent

有几种方式创建指向SecondActivity的intent:

  • 根据类获取:new Intent(当前类的content,目标类的class)
    例:new Intent(FirstActivity.this, SecondActivity.class)
  • 根据action和category获取:new Intent(目标类的action)
    注:Intent仅能跳转到category=android.intent.category.DEFAULT的活动,即,如果两个活动action相同,category不同,则会直接跳转到DEFAULT活动;若两个活动action和category都相同,则会弹出跳转选择框。
跳转至新活动

通过startActivity(intent)跳转至新活动
通过startActivity(intent, requestCode)跳转至新活动,并要求新活动销毁时返回结果,结果以requestCode接收(方法已过期)

Intent intent = new Intent("intentNameTest");
startActivity(intent);
//startActivityForResult(intent, 1)
结束当前活动,返回上一级

销毁当前活动通过finish()方法
如果需要返回结果,则要通过一个空intent进行传递,返回数据通过putExtra方法传输:

Intent emptyIntent = new Intent();
emptyIntent.putExtra("data_return", "返回数据");
setResult(1, emptyIntent);
finish();

上级活动通过重写onActivityResult接收,数据通过get相关方法接收:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);
    String str = data.getStringExtra("data_return");
}
Fragment

fragment是依托于活动运行的,相当于一个小模块,每个活动中可以有多个fragment,同一个fragment也可以被多个活动引用。
fragment的生命周期不同于活动,单独计算,但受活动影响(活动启动不代表fragment启动,活动销毁fragment一定销毁)。
有一些控件是专属于fragment的。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:Android开发-1-创新互联
链接分享:http://abwzjs.com/article/gscpo.html