标签:activity finish ota not com extra 重写 技巧 tcl
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 @Override 22 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 @Override 57 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 @Override 64 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");
学习书籍:《第一行代码》
标签:activity finish ota not com extra 重写 技巧 tcl
原文地址:http://www.cnblogs.com/douzujun/p/6340967.html