(Android第一行代码实验一)活动的最佳实践

临文乍了了,彻卷兀若无。这篇文章主要讲述(Android第一行代码实验一)活动的最佳实践相关的知识,希望能为你提供帮助。
活动的最佳实践
    1.知晓当前是在哪一个活动
                这个技巧将教会你,如何根据程序当前的界面就能判断出这是哪一个活动。

  •   首先需要新建一个 BaseActivity 继承自 Activity,然后在 BaseActivity中重写 onCreate()方法。
              public class BaseActivity extends Activity {     
                    @Override 
                      protected void onCreate(Bundle savedInstanceState)  {
                //在 onCreate()方法中获取了当前实例的类名,并通过 Log打印了出来。
                    super.onCreate(savedInstanceState);    
                    Log.d("BaseActivity", getClass().getSimpleName());  
                }   
            }
  •   接下来我们需要让 BaseActivity 成为 ActivityTest 项目中所有活动的父类修改 FirstActivity、SecondActivity和 ThirdActivity的继承结构,让它们不再继承自 Activity,而是 继承自 BaseActivity。现在重新运行程序,然后通过点击按钮分别进入到 FirstActivity、SecondActivity 和 ThirdActivity的界面,这时该活动的类名就会被打印出来,        这样我们就可以 时时刻刻知晓当前界面对应的是哪一个活动了.
 
 
      2.随时随地退出程序
                      你会发现当前想退出程序是非常不方便 的,需要连按三次 Back 键才行,该方法可以解决这个问题。
              解决思路:
                        只需要用一个专门的集合类对所有的活动进行管理就可以了,
  •             新建一个 ActivityCollector类作为活动管理器
            public class ActivityCollector {   
                        //,我们通过一个 List来暂存活动,
                            public static List< Activity> activities = new ArrayList< Activity> ();
                        //然后提供了一个 addActivity()方法用 于向 List 中添加一个活动
 
                            public static void addActivity(Activity activity) { 
                                                  activities.add(activity);  
                                }
                      //提供了一个 removeActivity()方法用于从 List 中移除活动。
                              public static void removeActivity(Activity activity) { 
                                              activities.remove(activity);  
                              } 
                      //最后 提供了一个 finishAll()方法用于将 List中存储的活动全部都销毁掉。
                            public static void finishAll() {
                                  for (Activity activity : activities) {   
                                  if (!activity.isFinishing()) {     
                                    activity.finish();      
                                          }
                      } 
                }
}
  •   修改 BaseActivity中的代码
        public class BaseActivity extends Activity {
 
                            @Override
                          protected void onCreate(Bundle savedInstanceState) {   
                                          super.onCreate(savedInstanceState);    
                                          Log.d("BaseActivity", getClass().getSimpleName());
【(Android第一行代码实验一)活动的最佳实践】                        //调用了 ActivityCollector 的 addActivity()方法,表明 将当前正在创建的活动添加到活动管理器里
                                        ActivityCollector.addActivity(this);  
                                }     
                                            @Override 
                  //重写 onDestroy()方法, 并调用了 ActivityCollector 的 removeActivity()方法,表明将一个马上要销毁的活动从活动管 理器里移除。
                        protected void onDestroy() { 
                      super.onDestroy();  
                      ActivityCollector.removeActivity(this);  
                        }   
      }
  •           从此以后,不管你想在什么地方退出程序,只需要调用 ActivityCollector.finishAll()方法 就可以了.
                Button button3 = (Button) findViewById(R.id.button_3);
                button3.setOnClickListener(new OnClickListener() { 
                            @Override
                        public void onClick(View v) {   
              //调用 ActivityCollector.finishAll()方法
                                ActivityCollector.finishAll();    
                              }
                });  
 
    3.启动活动的最佳写法
  •         启动 SecondActivity传递字符串参数最佳写法。
                      public class SecondActivity extends BaseActivity { 
          /*所有 SecondActivity中需要的数据都是通过 actionStart()方法的参数传递过来的,然 后把它们存储到 Intent中,最后调用 startActivity()方法启动                                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);  
                                          }  ……
                        }
        这样写是一目了然,SecondActivity 所需要的数据全 部都在方法参数中体现出来了.
  •       现在只需要一行代码就可以启动 SecondActivity
                          button1.setOnClickListener(new OnClickListener() {
                                            @Override
                                public void onClick(View v) { 
                                        //传入参数
                                          SecondActivity.actionStart(FirstActivity.this, "data1", "data2");  
                            }
              });
                                                                  2016-11-25  21:56:18










    推荐阅读