知晓当前是在哪一个活动
新建一个BaseActivity
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity",getClass().getSimpleName());
}
}
之后所有的Activity作为BaseActivity的子类,这样进入到某一活动界面,就会打印Activity的类名。
随时随地退出程序
建一个专门的集合类对所有的活动进行管理
public static void finishAll(){
for(Activity activity:activities){
if(!activity.isFinishing()){
activity.finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
}
}
修改BaseActivity类
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity",getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
killProcess()方法用于杀掉一个进程,他接收一个进程id参数,我们可以通过myPid()方法来获得当前程序的进程id。
启动活动的最佳写法
我们一般写法在MainActivity
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("param1","data1");
intent.putExtra("param2","data2");
startActivity(intent);
而一种更简便的写法在SecondActivity中
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);
}
然后再MainActivity中调用SecondActivity中的actionStart()方法
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SecondActivity.actionStart(MainActivity.this,"data1","data2");
}
});