2.6.1 通晓以后是在哪一个流动
右击 app/src/main/java/com/example/activitytest
-> New -> Java Class -> BaseActivity
# app/src/main/java/com/example/activitytest/BaseActivity.java
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
// 获取以后实例的类名
Log.d("BaseActivity", getClass().getSimpleName());
}
}
批改流动类的继承关系,继承于 BaseActivity
:
public class FirstActivity extends BaseActivity {}
public class SecondActivity extends BaseActivity {}
public class ThirdActivity extends BaseActivity {}
2.6.2 随时随地退出程序
# app/src/main/java/com/example/activitytest/ActivityCollector.java
// 流动管理器类
public class ActivityCollector {
// 寄存流动的 List
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();
}
}
}
}
# app/src/main/java/com/example/activitytest/BaseActivity.java
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
// 将流动放入 List 中
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {super.onDestroy();
// 从 List 中移除流动
ActivityCollector.removeActivity(this);
}
}
# app/src/main/java/com/example/activitytest/ThirdActivity.java
public class ThirdActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
Log.d("ThirdActivity", "Task id is" + getTaskId());
setContentView(R.layout.third_layout);
Button button3 = (Button) findViewById(R.id.button_3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {ActivityCollector.finishAll();
// 完结以后过程,保障程序齐全退出
android.os.Process.killProcess(android.os.Process.myPid());
}
});
}
}
2.6.3 启动流动的最佳写法
# app/src/main/java/com/example/activitytest/SecondActivity.java
public class SecondActivity extends BaseActivity {
// 对外提供启动流动的办法,并定义启动参数
public static void actionStart(Context context, String data1, String data2) {Intent intent = new Intent(context, SecondActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
}
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 启动 SecondActivity 流动
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
}
});