显示当前界面对应的Activity名
新建一个Java类,不用在AndroidManifest.xml中注册。
BaseActivity.java
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());
}
}
在每个Activity中都继承新建的这个Java类,每启动一个界面,就会在日志中输出当前界面的Activity名称。
在任何地方都可以退出程序
新建一个Java类,不用在AndroidManifest.xml中注册。
就是新建一个Activity集合,每次启动Activity,就将其存储,在系统将其销毁之前从集合中移除,需要退出程序时,则遍历注销。
Activity管理器:
ActivityCollector.java
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();
}
}
//kill当前进程
android.os.Process.killProcess(android.os.Process.myPid());
}
}
BaseActivity.java
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());
//添加至Activity管理器中
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//从Activity管理器中删除
ActivityCollector.removeActivity(this);
}
}
最好的启动Activity的方法
避免传递数据时,不清楚目标活动需要哪些数据的解决方案。
A→B
A调用B的actionStart方法时,就知道了B需要什么数据了。
A:
B.actionStart(A.this,args1,args2);
B:
public static void actionStart(Context context,String args1,String args2){
Intent intent = new Intent(context,B.class);
intent.putExtra("xxx",args1);
intent.putExtra("xxx",args2);
context.startActivity(intent);
}