android之activity(活动)
来源:互联网 发布:四川广电网络新都点 编辑:程序博客网 时间:2024/06/05 13:30
如果想仔细了解Activity的知识,可以去官网去看,那里面讲的很详细。
https://developer.android.com/reference/android/app/Activity.h
Acitivity
Acitivity翻译过来是活动的意思,而我的理解是:可以把Acitivity理解为是一个界面。就是你手机屏幕看到的就是一个Acitivity。接下来我就简单讲下怎么使用它,
主要讲以下知识点:
- Acitivity的启动方式
- Actiity的传递数据
- Activity的生命周期
- Activity启动模式
Acitivity的启动方式之startActivity()
下面我就用代码演示下:先创建两个Aitivity
两个布局文件代码如下:
- 布局文件一
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.edu.androidforactivity.MainActivity"> <TextView android:textColor="#ff0000" android:textSize="26sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="界面一" /> <Button android:text="确定" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onclick" /></LinearLayout>
2 。 布局文件二
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.edu.androidforactivity.MainActivity"> <TextView android:textColor="#ff0000" android:textSize="26sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="界面二" /> <Button android:text="确定" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onclick" /></LinearLayout>
两个Acitivity代码如下:
- MainActivity.java
import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onclick(View view){ //两个参数的意思 1,上下文,2,代表你跳转的avtivity. Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent);//开启Activity }}
2 . MainActivity.java代码如下:
import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); }}
运行结果
运行结果就是,点击按钮会MainActivity跳转到Main2Activity中去
Acitivity的启动方式之 startActivityForResult()
你把上面的startActivity()方法换成startActivityForResult()这个也能跳转到第二个Main2Activity。这里我就不讲了,在接下来将acitivity传递数据时在仔细讲这种传递方式。
Actiity的传递数据
我们可以把数据传递放在intent中去,然后获取即可。下面我们就用代码实现。
- 回传数据。
两个布局文件代码如下:
activity_main.xml代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.edu.androidforactivity.MainActivity"> <TextView android:textColor="#ff0000" android:textSize="26sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="界面一" /> <Button android:text="确定" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onclick" /> <TextView android:textSize="26sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/result_tv" /></LinearLayout>
activity_main2代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.edu.androidforactivity.MainActivity"> <TextView android:textColor="#ff0000" android:textSize="26sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="界面二" /> <Button android:text="确定" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onclick" /> <EditText android:id="@+id/input_et" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入" /></LinearLayout>
这两个布局文件很简单,就不解释了
MainActivity.java代码如下:
import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {private TextView mTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTv= (TextView) findViewById(R.id.result_tv); } public void onclick(View view){ //两个参数的意思 1,上下文,2,代表你跳转的avtivity. Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivityForResult(intent,0);//开启Activity } //三个参数的含义 1,代表的是哪个控件请求的,2,代表的是哪个传来到额数据,3,意图,一般会携带数据 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode==RESULT_OK){ String content=data.getStringExtra("content"); mTv.setText(content); Toast.makeText(MainActivity.this,"回传成功",Toast.LENGTH_SHORT).show(); } }}
Main2Activity.java代码如下:
import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;public class Main2Activity extends AppCompatActivity { private EditText mEt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); mEt = (EditText) findViewById(R.id.input_et); } public void onclick(View view){ Intent intent=new Intent(); String content=mEt.getText().toString();//获取用户输入的数据 intent.putExtra("content",content);//把数据放到intent中 setResult(RESULT_OK,intent);//会回调开启自己的Activity中的onActivityResult()方法 finish();//销毁当前的activity }}
运行结果如下:
回传数据只是简单的实现了下,其实里面的内容还是比较多的,比如activity多了以后,我们就要根据请求码跟返回码来操作。来确定是哪个控件请求的,该返回给哪个activity 学完了回传数据,还有一种方式传递数据,这个比较简单。就不在写出来了。接下来重点要学习的是activity生命周期。
Activity生命周期
先看下官网上给的图
首先我们看到这个图有几个循环,我们就每个演示下,这样会比较理解。
首先我们创建个 Activity
MainActivity.java代码如下:
import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class MainActivity extends AppCompatActivity {private static final String TAG="TAG"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate: ........."); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart: ............."); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume: ..........."); } @Override protected void onPause() { super.onPause(); Log.i(TAG, "onPause: .............."); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "onStop: ..............."); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy: ................."); }}
当我们运行时,界面出来后执行的结果是:
按返回键后执行的结果是:
这就是一个完整的周期,然后我们在创建一个Activity, 假设用A 和 B代表两个Activity,A跳转B中,然后按返回键,看运行结果。
当我们运行时,界面出来后执行的结果是:
然后跳转到B 界面中 执行的结果是:
按返回键后执行的结果是:
再按返回键后执行的结果是:
如果我们在A活动中弹出对话框时,是不执行任何的方法。如果对话框是Activity就会执行相应的方法。比如也是两个活动,在A中启动B(B是以对话框形式的)。然后我们按返回键,直到完全退出应用了,看下执行了哪些方法;
可以直接在清单文件中把第二个Activity加句 android:theme=”@style/Theme.AppCompat.Dialog.Alert”就可以了。
运行结果:
运行后首先看到A界面,执行的方法是
A onCreat() >- A onStart() >- A onResume
然后跳转到B界面中执行的方法是
A onPause() >-B onCreate() >- B onStart() >- B onResume
然后点击返回键 执行的方法是:
B onPause() >- A onResume() >- B onStop() >- B onDesroy()
然后再点击返回键 执行的方法是:
A onPause() >-A onStop() >- A onDestroy()
Activity启动模式:
假设三个Acitivity A B C .
1 standard
这就是系统默认的启动模式,该模式是每启动一个就会放在栈顶。
2 singleTop
该模式是如果该Activity位于栈顶,然后又开启该Activity,就不会创建并进栈。还是用原来的。
3 singleTask
该模式是,如果创建的Activity栈里面有的话。就不会创建,并且把该Activity之上的全部出栈,让该Activity位于栈顶。
4 singleInstance
该模式是,开辟一个新栈,把新创建的Activity放进去,如果下次还是创建该Activity,就不会再创建咯。
其实Activity知识点还是很多的,我只是学习下了Activity的用法,里面太深的知识我也不太懂,想更仔细了解的话就去官网看
https://developer.android.com/reference/android/app/Activity.h
源码下载
https://github.com/songshuilin/AndroidForBlog/tree/master/androidforactivitylife
- android之activity(活动)
- Android之活动(Activity)
- 【Android】之 活动(Activity)
- android四大组件之活动(Activity)
- Android之Activity(一):活动简介
- Android 之 activity活动(二、Toast,menu,活动销毁)
- Android 之 Activity活动(一、新建activity)
- Android - Activity(活动) 详解
- Android Activity活动探究
- Android Activity活动生命周期
- Android 活动(Activity)
- Android Activity探究活动
- android四大金刚(组件)之-:Activity(活动窗口)
- Android笔记---四大组件之Activity活动详解
- Android之Activity(七):启动活动的最佳写法
- Android之Activity(三):活动的生命周期
- Android之Activity(四):活动的启动模式
- Android之路 1.activity跳转、传值、生命周期、活动
- Android ToolBar+Translucent System Bar的用法
- Eclipse IDE for Java Developers没有Server功能
- 【技术分享】手把手教你如何构造office漏洞EXP(第三期)
- SAP一句话入门:Human Resource
- 运算符重载
- android之activity(活动)
- hadoop+spark集群自动化部署实现
- Web页面测试总结—控件类
- Convolutional Networks for MNIST in Tensorflow
- Excel中 如何使用不连贯的数据来创建图表(C#)
- KMP算法,next数组求解
- 并发演进条件
- redis设计思想
- KVM的vMMU相关数据结构及其影子页表关系分析