您的位置:首页 > 其它

打开的多个Activity如何一次关闭

2016-03-12 00:16 204 查看

方法一:Application

重写该App的Application 类,

package core.xidian.onekeyquit;
import android.app.Activity;
import android.app.Application;
import java.util.ArrayList;
import java.util.List;
/**
* Created by 周亚胜 on 2016/3/11.
*/
public class MyApplication extends Application {
public List<Activity> list = new ArrayList<>();
public void exit(){
for(Activity a:list){
a.finish();
}
list.clear();
}
}


顺便值得一提的是Application:通常Application是系统自动创建的,启动Application时,系统会为该应用分配一个唯一的PID,所有的Application都在此进程上运行。因此要定义一个全局变量的话,这就是最合适的地方了。我们在一个Activity中改变了这些全局变量的值,则在同一应用中的其他Activity的值也会随之改变(这里我还思考了关于同事改变,是否要将其做成一个transaction,结论是没有必要,因为同时只有一个Activity调用了onResume方法)。Application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以可以通过Application来进行一些,如:数据传递、数据共享和数据缓存等操作。

同时,在每个Activity中都获取全局变量list,每次创建的时候就调用:

MyApplication myApplication= (MyApplication) getApplication();
myApplication.list.add(this);


在每个Activity中对后退时间进行监听,重写onBackPressed方法:

public void onBackPressed() {
myApplication.exit();
super.onBackPressed();
}


大功告成!

最后,一定注意,Application重写之后要在AndroidManifest文件中定义!!!血的教训,调了2小时

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  activity退出