继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Android——巧妙使用活动

qq_Inmylife_1
关注TA
已关注
手记 4
粉丝 2
获赞 37

知晓当前界面是哪一个活动
新建一个BaseActivity继承自Activity

public class BaseActivity extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     //调用父类的onCreate方法
     super.onCreate(savedInstanceState);
     //获取当前实例的类名
     Log.d("BaseActivity", getClass().getSimpleName());
     }
}

BaseActivity成为项目中所有活动的父类。运行程序时,每启动一个活动就会打印出该活动的类名。
随时随地退出程序
假设有一个程序,包含3个活动(A、B、C),当我们运行到C时,想要退出程序,如果按back键则需要点击3次,这样的用户体验不好。此时,需要一个专门的集合类对活动进行管理。
新建一个ActivityCollector类作为活动管理器:

public class  ActivityCollector{
     //用activities 暂存活动
     public static List<Activity> activities = new ArrayList<Activity>();
     //向activities中添加一个活动
     public static void addActivity(Activity activity) {
          activities.add(activity);
     }
     //从activities中删除一个活动
     public static void removeActivity(Activity activity){
          activities.remove(activity);
     }
     //将activities中存储的活动全部销毁
     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());
          //将当前正创建的活动添加到活动管理器中
          ActivityCollector.addActivity(this);
     }
     @Override
     protected void onDestroy() {
          super.onDestroy();
          //将当前马上要销毁的活动从活动管理器中移除
          ActivityCollector.removeActivity(this);
     }
}

让所有的活动都继承BaseActivity类。不论希望在哪个活动中退出,只需要调用ActivityCollector.finishAll()方法就可以了。还可以在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出。
启动活动的最佳写法
在需要被启动的活动(假设为SecondActivity.class)中添加actionStart()方法:

public class SecondActivity extends BaseActivity{
     /*完成Intent的构建,所有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.actionStart(MainActivity.this,"hello","world!");
打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP