Activity生命周期+四种模式——枯燥重要(五)

2023-11-22 08:40

本文主要是介绍Activity生命周期+四种模式——枯燥重要(五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Activity生命周期+四种模式


了解android系统的四大组件
掌握Activity的生命周期
LogCat的使用

Android系统有四个重要的组件,分别是
   Activity
   Service
   BroadcastReceiver
   ContentProvider

Activity是Android程序的呈现层,显示可视化的用户
    界面,并接收与用户交互所产生的界面事件
Android应用程序可以包含一个或多个Activity,一般在
   程序启动后会呈现一个Activity,用于提示用户程序已经
   正常启动

了解Androi系统四个重大组件  Activity  SERvice后台BroadcastReceive广播ContentProvider内容提供者数据共享

Activity生命周期

系统调用方面——事件回调函数

打开onCreate(创建)onStart(开始)onResume(控件绘制完成,跟用户交互)先运行重生:

onRestart onStart onResumeonRestart代替onCreate)退出onPause(暂停)onStop(停止) 

onDestroy(销毁)跳转页面,先是自己onPause(暂停)跳转页面的onCreate/onRestart()然后是自己的onStop(停止)




重点重点重点重要的事说三遍





掌握

 

四种模式。

android:launchMode="singleInstance"

 

单任务模式android:launchMode="singleTask"  首页想退出程序。在它之前都销毁了。

Singletop  加载模式//在栈顶服用不再重建

单实例模式android:launchMode="singleInstance"


1.standard 标准模式也是Activity默认的加载模式。按调用顺序压入Activity栈

2.singleTop 栈顶单一模式,当Actiwity栈顶已存在实例,则不重新创建,佛祖创建。

3.singleTask 单任务模式,当Actiwity栈中存在实例,将销毁栈中此实例之上的实例。

4.singleInstance单实例模式,实例创建后放在单独的栈中,不与其他实例共享Activity栈


1.MainActivity程序代码

package com.example.jreduch729;import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {
private Button bt1;private Button bt2,bt3;private Button btqq;private TextView tv;private TextView tv1,tvqq;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.e("====MainActivity=","onCreate");tv1=(TextView)findViewById(R.id.tv1) ;Intent intent4=getIntent();String d=intent4.getStringExtra("daan");tv1.setText("问题结果是:"+d);tvqq=(TextView)findViewById(R.id.tvqq) ;Intent intent2=getIntent();String use=intent2.getStringExtra("use");Intent intent3=getIntent();String usepsw=intent3.getStringExtra("usepsw");tvqq.setText("QQ账号+密码:"+use+"+"+usepsw);bt1=(Button)findViewById(R.id.bt1);bt2=(Button)findViewById(R.id.bt2);bt3=(Button)findViewById(R.id.bt3);tv=(TextView)findViewById(R.id.tv) ;bt1.setOnClickListener(new View.OnClickListener() {@Override//跳转public void onClick(View v) {Intent intent=new Intent(MainActivity.this,SecondActivity.class);startActivity(intent);}});bt2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(MainActivity.this,SecondActivity.class);intent.putExtra("arg1",5);intent.putExtra("arg2",6);intent.putExtra("arg3","hh");st<span style="font-size:14px;">artActivityForResult(intent,110);  //一对}});bt3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(MainActivity.this,MainTeacherActivity.class);;intent.putExtra("arg0","你高中数学体育老师教?");startActivity(intent);}});btqq=(Button)findViewById(R.id.btqq);btqq.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(MainActivity.this,QqActivity.class);startActivity(intent);}});}//返回结果都要走这个程序@Override                                         //一对protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);Log.e("==requestCode",""+requestCode);Log.e("==resultCode",""+resultCode);tv.setText("结果是:"+resultCode+data.getStringExtra("result2")+data.getStringExtra("result1"));
//        if(requestCode==100){
//
//        }else if(requestCode==110){
//            tv.setText("结果是:"+resultCode);
//        }
//}@Overrideprotected void onStart() {    //开始启动super.onStart();Log.e("====MainActivity=","onStart");}@Overrideprotected void onRestart() {  //重新启动重新开始super.onRestart();Log.e("====MainActivity=","onRestart");}@Overrideprotected void onResume() {   //super.onResume();Log.e("====MainActivity=","onResume");}@Overrideprotected void onPause() {   //暂停停止super.onPause();Log.e("====MainActivity=","onPause");}@Overrideprotected void onStop() {super.onStop();Log.e("====MainActivity=","onStop");}@Overrideprotected void onDestroy() {super.onDestroy();Log.e("====MainActivity=","onDestroy");}
}
</span>
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.jreduch729.MainActivity"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/bt1"android:text="跳转画面"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/bt2"android:layout_below="@+id/bt1"android:text="跳转画面返回结果"/><TextViewandroid:layout_width="match_parent"android:layout_height="100dp"android:id="@+id/tv"android:layout_below="@+id/bt2"android:textSize="20dp"android:text="结果是::"android:textColor="#f81111"android:textStyle="normal|bold|italic" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/bt3"android:layout_below="@+id/tv"android:text="你高中数学体育老师教?"/><TextViewandroid:layout_width="match_parent"android:layout_height="100dp"android:id="@+id/tv1"android:layout_below="@+id/bt3"android:textSize="20dp"android:text="问题结果"android:textColor="#f81111"android:textStyle="normal|bold|italic" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btqq"android:layout_below="@+id/tv1"android:text="QQ登陆"/><TextViewandroid:layout_width="match_parent"android:layout_height="100dp"android:id="@+id/tvqq"android:layout_below="@+id/btqq"android:textSize="20dp"android:text="QQ账号+密码"android:textColor="#f81111"android:textStyle="normal|bold|italic" /></RelativeLayout>
</span>

2.MainTeacherActivity程序代码

<span style="font-size:14px;">package com.example.jreduch729;import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;public class MainTeacherActivity extends AppCompatActivity {
public Button bt1;public TextView tv1;public TextView et;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_teacher);tv1=(TextView)findViewById(R.id.tv1) ;Intent intent5=getIntent();String d1=intent5.getStringExtra("arg0");tv1.setText("问题——"+d1);bt1=(Button)findViewById(R.id.bt1);final   EditText daan=(EditText)findViewById(R.id.et);bt1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(MainTeacherActivity.this,MainActivity.class);intent.putExtra("daan", daan.getText().toString());startActivity(intent);}});}}
</span>
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.jreduch729.MainTeacherActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv"android:text="问题:"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv1"android:layout_below="@id/tv"android:text="问题:::"android:textSize="20dp"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/et"android:text="请输入问题答案"android:layout_below="@id/tv1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/bt1"android:layout_below="@id/et"android:text="完成"android:layout_alignParentEnd="true"/>
</RelativeLayout>
</span>
3. SecondActivity程序代码

<span style="font-size:18px;">package com.example.jreduch729;</span><span style="font-size:14px;">import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;public class SecondActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);Log.e("====SecondActivity=","onCreate");Intent intent=getIntent();int arg1=intent.getIntExtra("arg1",0);int arg2=intent.getIntExtra("arg2",0);String arg3=intent.getStringExtra("arg3");intent.putExtra("result1",arg3);intent.putExtra("result2","数据返回"+arg3);
if (arg1>0&&arg2>0) {// setResult(120);setResult(arg1 + arg2,intent);finish();
}}@Overrideprotected void onStart() {    //开始启动super.onStart();Log.e("====SecondActivity=","onStart");Log.d("====SecondActivity=","onStart");Log.w("====SecondActivity=","onStart");Log.v("====SecondActivity=","onStart");Log.i("====SecondActivity=","onStart");}@Overrideprotected void onRestart() {  //重新启动重新开始super.onRestart();Log.e("====SecondActivity=","onRestart");}@Overrideprotected void onResume() {   // 控件绘制完成super.onResume();Log.e("====SecondActivity=","onResume");}@Overrideprotected void onPause() {   //暂停停止super.onPause();Log.e("====SecondActivity=","onPause");}@Overrideprotected void onStop() {  //停止super.onStop();Log.e("====SecondActivity=","onStop");}@Overrideprotected void onDestroy() {  //破坏毁坏销毁super.onDestroy();Log.e("====SecondActivity=","onDestroy");</span><span style="font-size:18px;">}
}
</span>
4.QqA Activity程序代码

<span style="font-size:14px;">package com.example.jreduch729;import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;public class QqActivity extends AppCompatActivity {public Button bt1;public TextView et1;public TextView et2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_qq);final EditText use=(EditText)findViewById(R.id.et1);final   EditText usepsw=(EditText)findViewById(R.id.et2);bt1=(Button)findViewById(R.id.bt1);bt1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(QqActivity.this,MainActivity.class);intent.putExtra("use", use.getText().toString());intent.putExtra("usepsw", usepsw.getText().toString());startActivity(intent);}});}
}
</span>







作者:冲天之峰   20160729









这篇关于Activity生命周期+四种模式——枯燥重要(五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/408892

相关文章

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme