安卓系统为我们提供了销毁当前页面的方法——finish();但是很多时候,我们的安卓物理按键也可以直接back.
用户没有点击返回怎么销毁
当用户没有点击某个按钮去销毁活动的时候,有个onPressBack()方法可以调用,把逻辑写到这个方法中。
知道自己当前在哪个Activity中
创建一个BaseActiviy 的 java类。然后让他继承APPcompatActivity 让之前的那几个Activity 来继承这个baseactivity 并在这个BaseActivity 中重写oncreate 方法
Log.d("XX ",getclass.getSimpleName()); 再进入对应的活动就能看到了
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", "XXXXXXXX " +getClass().getSimpleName());
}
优雅退出
活动的管理是任务栈的形式去实现的,所以,如果我开启A。B。C三个服务,需要按Back三次才能推出,
public class Collecter {
static ArrayList<Activity> al = new ArrayList<Activity>();
public static void addActivity(Activity activity) {
al.add(activity);
}
public static void removeActivity(Activity activity) {
al.remove(activity);
}
public static void removeAll() {
for (Activity activity : al) {
activity.finish();
}
}
}
在BaseaActivity中使用:
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Collecter.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
Collecter.removeActivity(this);
}
}
在想要退出程序的地方直接Collector.removeAll(); 当然可以在销毁所有活动的代码后面加上杀掉当前进程
android.os.Process.killProcess(android,os,Process.myPid());
.killProcess 这个方法是杀进程的方法,但是只能杀自己,不能杀别人的进程 .myPid() 方法可以获得当前进程的id
良好的代码风格
很多大一点的项目都是协同开发的,很多时候,需要传递数据。我们常规的比如从一个页面调到另一个,直接就写了,但是有时候,需要去问,去看对应的代码,所以对代码进行一次封装,就可以减少很多工作了:
public static void actionStart(Context context, String aa, String bb) {
Intent i = new Intent(context,SecondActivity.class);
i.putExtra("gg",aa);
i.putExtra("bb",bb);
context.startActivity(i);
}
SecondActivity.actionStart(MainActivity.this,"哈哈","wocao");
需要传递2个重要参数,但是这个时候那个活动不是我写的,2个方法,
1.去阅读他的代码.2.问他
如 活动1 要跳活动2在 活动2中封装一个static方法