首页 > 代码库 > 常用关于活动的实践技巧

常用关于活动的实践技巧

 1 //知晓当前是在哪一个活动 2 /* 新建一个BaseActivity类(Java class), 继承自AppCompatActivity 3  * 重写 onCreate()方法,已有的活动无需再继承自AppCompatActivity, 而是继承自BaseActivity,当跳转到某个活动界面,Toast消息框就会显示该活动名称 4  */ 5 package com.example.activitytest; 6  7 import android.app.Activity; 8 import android.os.Bundle; 9 import android.support.annotation.Nullable;10 import android.support.v7.app.AppCompatActivity;11 import android.util.Log;12 import android.widget.Toast;13 14 /**15  * Created by admin on 2017/1/22.16  */17 18 public class BaseActivity extends AppCompatActivity {21     @Override22     protected void onCreate(@Nullable Bundle savedInstanceState) {23         super.onCreate(savedInstanceState);24 25         //采用Toast消息提示的方式, 显示当前是哪个活动名26         Toast.makeText(BaseActivity.this, getClass().getSimpleName(), Toast.LENGTH_SHORT).show();27     }
 1 /* 随时随地退出程序 2  * 实现ActivityCollector类作为活动管理器 3  */ 4 package com.example.activitytest; 5  6 import android.app.Activity; 7  8 import java.util.ArrayList; 9 import java.util.List;10 11 /**12  * Created by admin on 2017/1/22.13  */14 15 public class ActivityCollector {16     /*17     通过一个List来暂存活动18      */19     public static List<Activity> activities = new ArrayList<>();20     //提供一个addActivity()方法用于从List中移除活动.21     public static void addActivity(Activity activity) {22         activities.add(activity);23     }24     public static void removeActivity(Activity activity) {25         activities.remove(activity);26     }27 28     //最后提供了一个finishAll()方法用于将List中存储的活动全部销毁掉29     //不管在什么地方想退出程序,只需要调用ActivityCollector.finishAll(),就可以了30     public static void finishAll() {31         for (Activity activity : activities) {32             if (!activity.isFinishing()) {33                 activity.finish();34             }35         }36     }38 }39 40 //在BaseActivity类再修改一下代码41 package com.example.activitytest;42 43 import android.app.Activity;44 import android.os.Bundle;45 import android.support.annotation.Nullable;46 import android.support.v7.app.AppCompatActivity;47 import android.util.Log;48 import android.widget.Toast;49 50 /**51  * Created by admin on 2017/1/22.52  */53 54 public class BaseActivity extends AppCompatActivity {55 56     @Override57     protected void onCreate(@Nullable Bundle savedInstanceState) {58         super.onCreate(savedInstanceState);59         //表明将  当前创建  的活动添加到活动管理器中.60         ActivityCollector.addActivity(this);61         Toast.makeText(BaseActivity.this, getClass().getSimpleName(), Toast.LENGTH_SHORT).show();62     }63     @Override64     protected void onDestroy() {65         super.onDestroy();66         ActivityCollector.removeActivity(this);67     }68 }
 1 /* 启动活动的最佳写法  2  * 会遇到问题: 在自己负责的部分需要启动SecondActivity这个活动的功能, 3  * 却不清楚这个活动需要传递那些数据(项目中接手别人的代码) 4  * 修改SecondActivity中的代码 5  */ 6 public static void actionStart(Context context, String data1, String data2) { 7         Intent intent = new Intent(context, SecondActivity.class); 8         intent.putExtra("param1", data1); 9         intent.putExtra("param2", data2);10         context.startActivity(intent);11     }12 13 /* 这样,即使不用阅读SecondActivity中代码,不去询问负责SecondActivity编14  *写的同事, 也可以非常清晰的直达启动SecondActivity需要传递哪些数据. 15  *此时在活动FirstActivity中启动SecondActivity只需要一小行代码16  */17  SecondActivity.actionStart(FirstActivity.this, "data1", "data2");

学习书籍:《第一行代码》

常用关于活动的实践技巧