Android入门(8):活动的实用小技巧

上一篇:Android入门(7):活动的启动模式

知晓当前界面是哪一个活动

​ 其实如果每个活动都在onCreate方法打印出来,对于我们写起来实在不方便,我们其实可以新建一个BaseActivity类来实现,在这个类里面打印,然后其他活动类都继承这个类即可。

​ 注意这里BaseActivity和普通活动的创建方式并不一样,因为我们不需要BaseActivity在AndroidManifest.xml中注册,所以创建一个普通的Java类就好了,然后继承AppCompatActivity,并重写onCreate()方法:

public class BaseActivity extends AppCompatActivity {
    private static final String TAG = "BaseActivity";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: "+getClass().getSimpleName());
    }
}

然后在其他活动继承AppCompatActivity改为BaseActivity即可:
在这里插入图片描述

随时退出程序

​ 假设你想在ActivityTest的ThirdActivity直接退出程序,该怎么做呢?你应该把所有的活动都finish才行,那如何去获得这所有的活动呢?我们可以通过一个ActivityCollector类作为活动管理类,在BaseActivity中onCreate方法启用添加活动方法(addActivity),destroy启用移除方法(removeActivity)。我们新建一个ActivityCollector类:

public class ActivityCollector {
    public static List<Activity> activities = new ArrayList<>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for(Activity activity : activities) {
            if(!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
}

然后修改BaseActivity,如上面说的onCreate方法启用添加活动方法(addActivity),destroy启用移除方法(removeActivity)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "onCreate: "+getClass().getSimpleName());
    ActivityCollector.addActivity(this);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    ActivityCollector.removeActivity(this);
}

然后我们想通过ThirdActivity按钮直接退出只需绑定ActivityCollect.finishAll()方法即可

​ 我们还可以在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码如下所示:

android.os.Process.killProcess(android.os.Process.myPid);

​ 其中,killProcess()方法用于杀掉一个进程,它接受一个进程id参数,我们可以通过myPid()方法来获得当前程序的进程id。需要注意的是,killProcess()方法只能用于杀掉当前程序的进程,我们不能使用这个方法去杀掉其他程序。

启动活动的最佳写法

​ 假设,你想启动SecondActivity,但是你不知道SecondActivity需要传输哪些数据,这时你该怎么办呢?

修改SecondActivity中的代码:

public static void actionStart(Context context, String data1, String data2) {
    Intent intent = new Intent(context, SecondActivity.class);
    intent.putExtra("data1",data1);
    intent.putExtra("data2",data2);
    context.startActivity(intent);
}

修改FirstActivity中代码:
在这里插入图片描述
as会给出我们提示,同时我们还可以规定参数即为键值

总结:这些实用的小技巧都是前人积累的经验,我们平时写代码时也应注意积累经验,这些经验可以让我们写起代码给加轻松。

发布了87 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42317011/article/details/104340205