Acitivty最佳实践2----自定义activity栈,方便管理活动
2015-07-30 17:18
459 查看
1.Acitivty最佳实践
1.1项目结构
下载地址:http://download.csdn.net/detail/u013922681/8947035
1.2自定义activity栈,方便管理活动
Acitivty最佳实践1—-知晓当前是哪一个活动正在运行在上一节中(),当应用程序跳转到SecondActivity时,我想退出应用程序,发现,我要连续点击back三次才能退出应用程序,(不太了解活动栈的童鞋,先百度一下活动栈是什么,我简要说一下,活动栈,是android系统维护的一个activity栈,每当开启一个activity就会将该活动加载到该栈顶,如上一节,我一次开启的活动是,MainActivity->FirstActivity->SecondActivity,进栈的顺序也是这样,那么back的时候退栈的顺序就是一个倒序,依次是SecondActivity->FirstActivity->MainActivity,系统回一次回收activity)
栈图如下:
2.可想而知这样依次退栈的方式,给用户体验的效果觉得不是好的。
2.1那么怎么才能一次退出应用程序呢?其实很简单,思路是这样的。
1.自己维护一个activity的列表2.每创建一个activity就往这个列表里,增添当前的activity
3.每退出一个activity就finish,并且remove掉当前的activity,
4若要一次性退出activity,那么就遍历一下列表,执行3操作。
开始上源码啦!
新建一个类,ActivityManager,代码如下package com.example.demo01; import java.util.ArrayList; import java.util.List; import android.app.Activity; public class ActivityManager { public static List<Activity> list = new ArrayList<Activity>(); public static void addActivity(Activity activity){ list.add(activity); } public static void removeActivity(Activity activity){ list.remove(activity); } public static void finish(){ for (Activity activity : list) { if (!activity.isFinishing()) { activity.finish(); } } } }
然后在BaseActivity中做如下更改!
package com.example.demo01; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.i("BaseActivity", getClass().getSimpleName()); //得当当前类的名称 //--------------在“Acitivty最佳实践1”新增代码----------------------------- ActivityManager.addActivity(this); //------------------------------------------- } //--------------在“Acitivty最佳实践1”新增代码----------------------------- @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); ActivityManager.removeActivity(this); } //----------------------------------------------------------------------- public void actionStart(Context context,Class<?> className){ Intent intent = new Intent(context, className); startActivity(intent); } }
然后在每一个Activity中再添加一个按钮方便测试,UI如下:
以MainActivity为例,代码如下
package com.example.demo01; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.example.demo01.FirstActivtiy; public class MainActivity extends BaseActivity { private Button btnMain; //--------------在“Acitivty最佳实践1”新增代码----------------------------- private Button btnBack; //--------------------------------------------------------------------- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnMain = (Button) findViewById(R.id.activity_main_btn_main); btnMain.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub actionStart(MainActivity.this,FirstActivtiy.class); } }); //--------------在“Acitivty最佳实践1”新增代码----------------------------- btnBack = (Button) findViewById(R.id.activity_main_btn_back); btnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ActivityManager.finish(); } }); //--------------------------------------------------------------------- } }
相关文章推荐
- Android任务和返回栈完全解析,细数那些你所不知道的细节
- 一个通过自定义application管理安卓activity的例子
- Android Activity 全局管理 终极解决方案
- Android开发-自定义application对activity的管理与控制
- Activity管理类
- android中activity管理及界面传值
- 【常用工具类】Activity管理工具类AppManager
- 全局的activity管理
- Android Activity管理工具类
- Activity与Activity之间的回调
- 关于如何深度手动管理activity
- activity管理类
- Activity管理类
- Android中Activity的管理
- Android 项目开发必备-Activity管理栈之ActivityManager的建立
- android关闭指定的activity
- android退出应用销毁所有的activity
- android 对activity进行管理
- 退出Acitvity或应用的方式
- android activity管理类