Android学习之Activity

        Activity是android五大组件之一,其他四个分别是Service、ContentProvider、Fragment、BroadcastReceiver,Activity再一个app运行中起到很大的作用,通常我们可以将之理解为一个屏幕。

       在本文中,主要是回顾课堂上Activity如下知识:Activity的配置和使用、ActionBar的配置和使用、Activity的生命周期、Activity切换与传值、Activity的四种启动模式,以及综合实例

      Activity的配置和使用

      创建一个Activity,可继承自AppCompatActivity,,还需要在清单文件里面注册这个Activity(如果需要的话,还需要设置是否为启动的Activity)、设计好布局


      ActionBar的配置和使用

      1、ActionBar位于Activity的顶部,可用来显示activity的标题、Icon等其他需要交互的元素 

      2、ActionBar 是在Android 3.0(API 11)中加入到SK中的,想在低版本中使用ActionBar有两种选择:使用http://actionbarsherlock.com 或使用Support Library v7

      3、在Api 21以上,还可以修改更多的主题风格,包括textColorPrimary、colorPrimary(默认)、statusBarColo、colorPrimaryDar(默认)、colorAccent(默认)、windowBackground、navigationBarColor


      Activity的生命周期

     1、启动:先后执行onCreate()->onStart()->onResume三个方法

     2、按BACK键:onPause()->onStop()->onDestory()

     3、按HOME:先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁

     4、再次打开app:分别执行了onRestart()->onStart()->onResume()三个方法


     Activity切换与传值(Intent使用)

     1、Intent(意图、意向):组件之间相互调用和传递参数的类,Activity的直接通讯是通过Intent进行的。

     2、传值:通过Intent的putExra()方法,并在另一个接收Intent的Activity中调用getIntent()方法

     3、传递自定义对象:

         第一步:所传的对象 实现接口 Serializable
         第二步:传递对象的原始页面调用intent.putExtra()即可
         第三步:接收对象的界面使用getIntent().getSerializableExtra()获取对象(或者通过bundle.getSerializable(key))来获取


    Activity的四种启动模式

    1、启动模式简单的说是Activity启动时的策略,在清单文件中的使用android:launchMode属性设置;
    2、启动模式分成4种:standard, singleTop, singleTask, singleInstance

         standard:如果当前Activiity再次启动自己,则把创建一个新的Activity实例放进任务栈

         singleTop:当前Activity自己再次启动自己,任务栈的栈顶是本身,不会创建新的
                          当其他Acticity启动这个用singleTop模式的Activity的时候,会创建新的实例

         singleTask:如果要激活的那个Activity在任务栈中已经存在,则不需要创建,只需要把Activity调整到栈顶,并且把Activity以上的Activity实例都推出栈顶(pop)

              应用场景:可以用来退出整个应用,具体步骤为:
                               将主Activity设为SingleTask模式,然后在要退出的Activity中转到主Activity,然后重写Activity的onNewIntent函数,并在函数里面加上一句finish()即可

        singleInstance:多个应用需要共享Activity实例


    综合实例

    先看运行效果:




核心代码:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">   
        </activity>
        <activity android:name=".FightActivity">
    
        </activity>
        <activity android:name=".FightSecondActivity">
   
        </activity>
        <activity android:name=".LifeBaseActivity">

        </activity>
        <activity android:name="com.example.administrator.lauchermode.Main2Activity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.administrator.lauchermode.standardActivity"
            android:launchMode="standard" />
        <activity
            android:name="com.example.administrator.lauchermode.singleTopActivity"
            android:launchMode="singleTop" />
        <activity
            android:name="com.example.administrator.lauchermode.singleTaskActivity"
            android:launchMode="singleTask" />
        <activity android:name="com.example.administrator.lauchermode.switchedActivity" />
        <activity android:name="com.example.administrator.lauchermode.switchedAndPassParaActivity" />
        <activity android:name="com.example.administrator.lauchermode.switchedAndPassObjActivity" />
        <activity android:name="com.example.administrator.lauchermode.logCatActivity"></activity>
    </application>

</manifest>


Main2Activity.java

package com.example.administrator.lauchermode;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.administrator.myapplication.LifeBaseActivity;
import com.example.administrator.myapplication.R;
import com.example.administrator.myapplication.User;

public class Main2Activity extends AppCompatActivity {

    //Standard、SingleTop、SingleTask启动
    Button btn1 = null;
    Button btn2 = null;
    Button btn3 = null;

    //切换页面、切换并传值、切换并传递对象、LogCat日志、生命周期
    Button btn4 = null;
    Button btn5 = null;
    Button btn6 = null;
    Button btn7 = null;
    Button btn8 = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        btn1 = (Button) findViewById(R.id.btnStandard);
        btn2 = (Button) findViewById(R.id.btnSingleTop);
        btn3 = (Button) findViewById(R.id.btnSingleTask);

        btn4 = (Button) findViewById(R.id.swtichPage);
        btn5 = (Button) findViewById(R.id.swtichPageAndPassPara);
        btn6 = (Button) findViewById(R.id.swtichPageAndPassObj);
        btn7 = (Button) findViewById(R.id.logcat);
        btn8 = (Button) findViewById(R.id.lifeBase);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,standardActivity.class);
                startActivity(intent);
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,singleTopActivity.class);
                startActivity(intent);
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,singleTaskActivity.class);
                startActivity(intent);
            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,switchedActivity.class);
                startActivity(intent);
            }
        });
        btn5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,switchedAndPassParaActivity.class);
                intent.putExtra("name","张三");
                intent.putExtra("age","30");
                startActivity(intent);
            }
        });
        btn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,switchedAndPassObjActivity.class);
                User user = new User("张三",20,180,true);
                intent.putExtra("user",user);
                startActivity(intent);
            }
        });
        btn7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,logCatActivity.class);
                startActivity(intent);
            }
        });
        btn8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Main2Activity.this,LifeBaseActivity.class);
                startActivity(intent);
            }
        });
    }
}


singleTaskActivity java

package com.example.administrator.lauchermode;

import android.content.Intent;
import android.content.SyncAdapterType;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.example.administrator.myapplication.R;

public class singleTaskActivity extends AppCompatActivity {

    Button btn = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_single_task);

        setTitle("singleTask");
        btn = (Button) findViewById(R.id.btnLaucherSelfBySingleTask);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(singleTaskActivity.this,Main2Activity.class);
                startActivity(intent);

            }
        });
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        System.out.println("----------------onNewIntent()----------------");

//        Log.d("执行OnNewIntent()方法","OnNewIntent()...")
        finish();
    }
}


switchedAndPassObjActivity .java
package com.example.administrator.lauchermode;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import com.example.administrator.myapplication.R;
import com.example.administrator.myapplication.User;

public class switchedAndPassObjActivity extends AppCompatActivity {

    TextView tvObj = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_switched_and_pass_obj);
        setTitle("切换页面并传递对象");

        tvObj = (TextView) findViewById(R.id.tvObj);
        User user = (User) getIntent().getSerializableExtra("user");
        if (user != null) {
            Toast.makeText(this, "name:"+user.getAge()+"\nage:"+user.getAge()+"\nheight:"+
                    user.getHeight()+"\nmale? "+user.isGender(), Toast.LENGTH_SHORT).show();
            tvObj.setText("name:"+user.getAge()+"\nage:"+user.getAge()+"\nheight:"+
                user.getHeight()+"\nmale? "+user.isGender());
        } else {
            Toast.makeText(this,"传值失败",Toast.LENGTH_SHORT).show();
        }
    }
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值