常用关于活动的实践技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用关于活动的实践技巧相关的知识,希望对你有一定的参考价值。

 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");

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

以上是关于常用关于活动的实践技巧的主要内容,如果未能解决你的问题,请参考以下文章

在片段和活动之间进行通信 - 最佳实践

在另一个活动托管的片段之间传递数据的最佳实践

在android中使用底部导航的最佳实践:活动与片段

GCC优化技巧,真的有用吗?

python常用代码

关于片段生命周期