Android Studio(二):启动活动与结束应用

一、科学的结束应用

1. 用一个ActivityController类去管理所有的活动。

 

 

 3 import android.app.Activity;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 //活动管理器
 8 public class ActivityCollector {
 9     public static List<Activity> activities = new ArrayList<>();
10     //添加活动
11     public static void addActivity(Activity activity){
12         activities.add(activity);
13     }
14     //移除活动
15     public static void removeActivity(Activity activity){
16         activities.remove(activity);
17     }
18     //停止所有活动
19     public static void finishAll()
20     {
21         for(Activity activity:activities){
22             activity.finish();
23         }
24     }
25 }

2. 新建一个BaseActivity类作为所有活动的基类

 1 package com.example.test;
 2 
 3 import android.os.Bundle;
 4 import android.util.Log;
 5 import androidx.annotation.Nullable;
 6 import androidx.appcompat.app.AppCompatActivity;
 7 
 8 public class BaseActivity extends AppCompatActivity {
 9     @Override
10     protected void onCreate(@Nullable Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         Log.d("BaseActivity",getClass().getSimpleName());
13         ActivityCollector.addActivity(this);
14     }
15 
16     @Override
17     protected void onDestroy() {
18         super.onDestroy();
19         ActivityCollector.removeActivity(this);
20     }
21 }

在需要退出应用的时候,调用 ActivityCollector.finishAll() 就行了。

 

二、科学的启动活动

1. 在要被启动的活动类里添加一个Intent的构建方法

 1 public class SecondActivity extends BaseActivity {
 2     public static void actionStart(Context context,String datal,String data2){
 3         Intent intent = new Intent(context,SecondActivity.class);
 4         intent.putExtra("param1",datal);
 5         intent.putExtra("param2",data2);
 6         context.startActivity(intent);
 7     }
 8     @Override
 9     protected void onCreate(Bundle savedInstanceState) {
10         super.onCreate(savedInstanceState);
11         setContentView(R.layout.activity_second);
12     }
13 }

2. 在要启动该活动的地方,直接调用该方法就行了

SecondActivity.actionStart(MainActivity.this,"data1","data2");

data1和data2是要被启动的活动想要获得的数据。当然也可以不要。

 

posted @ 2022-03-08 18:04  番茄玛丽  阅读(318)  评论(0编辑  收藏  举报