Acitivty最佳实践1----知晓当前是哪一个活动正在运行

Acitivty最佳实践

1.知晓当前是哪一个活动正在运行

  • 往往我们需要看别人写的源码,但是有时候不知道启动的是哪一个活动,那么我们可以通过下面要讲解的方式知道,启动的当前活动到底是哪一个。
  • 在做Android开发的时候经常需要在Activity之间跳转,常用方式往往是Intent intent = new (context,className.class) startActivity(intent);这种方式,又有时候在跳转Activity需要传递数据,同时需要跳转的那个Activity并不是我们自己写的,那么我们需要知道写那个Activity的程序员我们到底需要传递哪些数据,很明显这样开发是很麻烦的,写这个Activity的人,总是要给别人回答,那么鞋面一种方式可以解决这样的问题。
  • 因为经常需要跳转,那么我们可以对跳转的这一部分代码进行封装。

代码地址:http://download.csdn.net/detail/u013922681/8946779

下面我们通过代码依依讲解

  • 先看一下项目结构
    Acitivty最佳实践1----知晓当前是哪一个活动正在运行_第1张图片
  • BaseActivity 继承Activity
package com.example.demo01;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class BaseActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        Log.i("BaseActivity", getClass().getSimpleName()); //得当当前类的名称
    }

    public void actionStart(Context context,Class<?> className){
        Intent intent = new Intent(context, className);
        startActivity(intent);
    }
}
  • MainActivtiy 继承自BaseActivity
package com.example.demo01;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.example.demo01.FirstActivtiy;
public class MainActivity extends BaseActivity {

    private Button btnMain;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnMain =  (Button) findViewById(R.id.activity_main_btn_main);
        btnMain.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                actionStart(MainActivity.this,FirstActivtiy.class);
            }
        });
    }


}
  • activty_main.xml
<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=".MainActivity" >

    <Button
        android:id="@+id/activity_main_btn_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转到第FirstActivity" />

</RelativeLayout> 
  • FirstActivty 继承BaseActivity
package com.example.demo01;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class FirstActivtiy extends BaseActivity {

    private Button btnFirst;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        btnFirst =  (Button) findViewById(R.id.activity_main_btn_first);
        btnFirst.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                SecondActivtiy.actionStart(FirstActivtiy.this,"下午将近四点","写博客有点晕,给好评~_~");
            }
        });
    }
}

activity_first.xml

<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=".MainActivity" >

    <Button
        android:id="@+id/activity_main_btn_first"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转到第SecondActivity" />

</RelativeLayout> 
  • SecondActivity继承BaseActivity
package com.example.demo01;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class SecondActivtiy extends BaseActivity {

    private Button btnSecond;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        tv = (TextView) findViewById(R.id.activity_second_tv);
        Intent intent = getIntent();
        String data1 = intent.getStringExtra("data1");
        String data2 = intent.getStringExtra("data2");
        tv.setText("data1:"+data1+"\n"+
                "data2:"+data2);
        btnSecond =  (Button) findViewById(R.id.activity_second_btn_second);
        btnSecond.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                actionStart(SecondActivtiy.this, MainActivity.class);
            }
        });
    }

    /** * 启动activty * @param context * @param data1 附加参数1 * @param data2 附加参数2 */
    public static void actionStart(Context context,String data1,String data2){
        Intent intent = new Intent(context, SecondActivtiy.class);
        intent.putExtra("data1", data1);
        intent.putExtra("data2", data2);
        context.startActivity(intent);
    }

}

activty_second.xml

<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=".MainActivity" >

    <Button
        android:id="@+id/activity_second_btn_second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转到第MainActivity" />

    <TextView
        android:layout_below="@id/activity_second_btn_second"
        android:id="@+id/activity_second_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</RelativeLayout> 

最后注意配置活动,AndroidMinifest.xml

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

    <uses-sdk  android:minSdkVersion="8" android:targetSdkVersion="18" />

    <application  android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
        <activity  android:name="com.example.demo01.MainActivity" android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.example.demo01.FirstActivtiy" android:label="@string/app_name_1"></activity>
        <activity android:name="com.example.demo01.SecondActivtiy" android:label="@string/app_name_2"></activity>
    </application>

</manifest>

效果截图:

  1. 当前活动MainActivity
    Acitivty最佳实践1----知晓当前是哪一个活动正在运行_第2张图片
    2.点击跳转到FristActivtiy

    3.点击跳转到SecondActivtiy

注:

**不知道大家是否注意到MainActivity跳转到FirstActivity和FirstActivity跳转到SecondActivity的actionStart()的来源不一样,前者来自于BaseActivity,而后者来自于SecondActivity的静态方法。之所以这样写,有如下两点:
1.在app开发中经常要写跳转的代码,所以是为了“偷懒”,简洁代码。
2.为什么不在BaseActivity里面重载SecondActivity里面的actionStart()方法,原因是公司的项目,有可能是联合开发,有一种情景就是SecondActivity是别人开发的,但是我要跳转到SecondActivity,而且需要传递数据,可问题是传递怎么的数据我们是不知道的,因此,为了不要让别人来询问你,这个SecondActivity需要传递什么的问题,那么在开发的时候就暴露一个方法给外界,方便跳转,提高开发效率>_<**

你可能感兴趣的:(源码,android,Android开发)