Android基础知识06—活动的四大启动模式

------ 活动的启动模式 ------

在实际项目中应该根据特定的需求为每个活动指定恰当的启动模式。 四种启动模式:    

standard 、 singleTop 、 singleTask 、 singleInstance,    

可以在AndriodManifest.xml中通过给<activity>标签制定android:launchMode属性选择启动模式。         

>> standard:活动默认的启动模式。每当启动一个新的活动,他就会在返回栈中入栈,并处于栈顶 位置。系统不会在乎这活动是否已经存在返回栈中,每次启动都会创建一个新的实例。    

>> singleTop:在启动活动时如果发现栈中的栈顶为该活动,则不新创建该活动。    

>> singleTask: 如果活动并不处于栈顶位置,还有可能创建多个活动的实例。为了在整个返回栈中 只有一个活动的实例,可以将任务的启动模式设置为singleTask。    

>> singleInstance: 该模式用于解决两个应用程序共享一个活动的问题,共享一个返回栈。

 

关于活动的一些应用技巧:    

>> 知晓当前运行的活动是哪一个活动:        

自创一个基类活动baseActivity,继承自Activity,并在onCreate方法中实现下列方法:            

  super.onCreate(savedInstanceState);     

  Log.d("BaseActivity", getClass().getSimpleName()); //获取当前活动的名字

>> 随时随地退出程序:        

只需用一个专门的集合类对所有的活动活动进行管理就可以了。

   public class ActivityCollector { //活动管理器类   

  public static List<Activity> activities = new ArrayList<Activity>();

    public static void addActivity(Activity activity) {    

    activities.add(activity); //往list中新加activity元素   

  }

    public static void removeActivity(Activity activity) {    

    activities.remove(activity); //删除list中的一个activity元素   

  }  

public static void finishAll() { //销毁list中所有的activity    

  for (Activity activity : activities) {     

    if (!activity.isFinishing()) {      

      activity.finish();     

    }    

  }   

}  

}

 自创的基类活动重写如下:

 public class BaseActivity extends Activity {   

  @Override  

  protected void onCreate(Bundle savedInstanceState) {    

    super.onCreate(savedInstanceState);    

    Log.d("BaseActivity", getClass().getSimpleName());//获得当前活动的名字    

    ActivityCollector.addActivity(this);//加入新创建的activity到list中   

  }   

 

  @Override   

  protected void onDestroy() {   

    super.onDestroy();   

    ActivityCollector.removeActivity(this); //在list中删除将要销毁的activity   

  }  

}   

posted @ 2016-07-17 21:27  前端人生  阅读(297)  评论(0编辑  收藏  举报