写点什么

Activity 详解与实现

  • 2021 年 11 月 06 日
  • 本文字数:2521 字

    阅读完需:约 8 分钟


一、Activity 介绍


=======================================================================


Activity 是 Android 应用的四大组件之一(另外三个是 Service、BroadcastReceiver 和 Comtenprovider),而 Activity 是 Android 应用最常见的组件之一。一个 Android 应用往往包括多个 Activity,不同的 Activity 向用户呈现不同的操作界面。Android 应用的多个 Activity 组成 Activity 栈,当前活动的 Activity 位于栈顶。


Activity 是 Android 应用中负责与用户交互的组件——大致上可以把它想象成 Swing 编程中的 JFrame 控件。不过它与 JFrame 控件的区别在于:JFrame 控件本身可以设置布局管理器,不断向 JFrame 中添加组件,但 Activity 只能通过 setContentView(View)来显示指定组件。


二、创建 Activity


=======================================================================


1、新建类继承 Activity 或其子类




import androidx.appcompat.app.AppCompatActivity;


//创建 ActivityTest 继承 AppCompatActivity


public class ActivityTest extends AppCompatActivity {


}


2 在 AndroidManifest.xml 中声明新建的 Activity




<activity android:name=".ActivityTest"></activity>


3 创建布局并在 Activity 的 OnCreate 中设置




创建布局



public class ActivityTest extends AppCompatActivity {


@Override


protected void onCreate(@Nullable Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


//设置布局


setContentView(R.layout.activity_test);


}


}


三、Activity 生命周期


=========================================================================


当 Activity 处于 Android 应用中运行时,它的活动状态有 Android 以 Activity 栈的形式管理,当前活动的 Activity 位于栈顶。随着不同应用的运行,每个 Activity 都有可能从活动状态转入非活动转态,也可能从非活动转态转入活动转态。


1、Activity 生命周期运行过程




从左往右诠释了 Activity 从创建到运行再到销毁



  • 在 Activity 的整个生命周期发生在第一次调用 onCreate 方法到最后一次调用 onDestroy 之间。一个 Activity 将在 onCreate 方法中完成所有“全局”状态的设置,并在 onDestroy 方法中释放所有剩余的资源。

  • 在 Activity 的 visible 生命周期发生在 onStart 方法到 onStop 方法之间相应调用。这两种方法之间,可以维护向用户显示 Activity 所需的资源。

  • Activity 的 foreground 生命周期发生在 onResume 方法和 onPause 方法之间。Activity 通常在这两个方法可以在恢复状态和暂停状态之间进行切换。


2、Activity 生命周期中方法调用




  • onCreate(Bundle saveStatus):创建 Activity 时被回调。该方法只会被调用一次。

  • onStart():启动 Activity 时被回调

  • onRestart():重新启动 Activity 时被回调。在 onStart()方法后一定会回调 onResume()方法。

  • onPause():暂停 Activity 时回调

  • onStop():停止 Activity 时回调

  • onDestory():销毁 Activity 时被回调。该方法只会被调用一次


public class ActivityTest extends AppCompatActivity {


//创建 Activity


@Override


protected void onCreate(@Nullable Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


setContentView(R.layout.activity_test);


System.out.print


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


ln("onCreate");


}


@Override


protected void onStart() {


super.onStart();


System.out.println("onStart");


}


@Override


protected void onResume() {


super.onResume();


System.out.println("onResume");


}


@Override


protected void onPause() {


super.onPause();


System.out.println("onPause");


}


@Override


protected void onStop() {


super.onStop();


System.out.println("onStop");


}


@Override


protected void onRestart() {


super.onRestart();


System.out.println("onRestart");


}


@Override


protected void onDestroy() {


super.onDestroy();


System.out.println("onDestroy");


}


}


四、Activity 的跳转和数据传递


=============================================================================


1、显式跳转和隐式跳转




通过 Intent(意图)实现 Activity 的显式跳转和隐式跳转

1.1 显式跳转

显式跳转有四种格式


//显式跳转


Intent intent = new Intent(this, BActivity.class);


startActivity(intent);


//显示跳转


// Intent intent = new Intent();


// intent.setClass(this, BActivity.class);


// startActivity(intent);


//通过设置 setClassName 实现显式跳转,需要传入完整的 Activity 地址


// Intent intent = new Intent();


// intent.setClassName(this, "com.example.test.jump.BActivity");


// startActivity(intent);


//通过设置 Component 实现显式跳转,需要传入完整的 Activity 地址


// Intent intent = new Intent();


// intent.setComponent(new ComponentName(this, "com.example.test.jump.BActivity"));


// startActivity(intent);

1.2 隐式跳转

1.2.1 隐式 Intent 图解



1.2.1 隐式 Intent 实现


在通过隐式调用时,需要在 AndroidManifest 中设置对应 Activity 的 action


<activity android:name=".jump.BActivity">


<intent-filter>


<action android:name="com.example.test.jump.BActivity" />


<category android:name="android.intent.category.DEFAULT" />


</intent-filter>


</activity>


//隐式调用


Intent intent = new Intent();


intent.setAction("com.example.test.jump.BActivity");


startActivity(intent);


2、Activity 之间的数据传递




Activity 之间数据的传递可以通过 Intent 中的 putExtra 方法传值


intent.putExtra("szh",1);


也可以通过实例化 Bundle 类,然后通过 Bund 的 put 方法设置自己想要的值,在通过 putExtra 方法传值


Bundle bundle = new Bundle();

评论

发布
暂无评论
Activity详解与实现