第2章 Activity

这里写图片描述

最佳实践

  1. 知晓当前是在哪一个活动
    有时,我们运行的App中有很多个活动,我们并不知道手机上面显示的界面对应众多Activity中的哪一个
    解决办法:首先新建BaseActivity继承Activity并且重写onCreate()
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
        Log.d("BaseActivity", getClass().getSimpleName());
    }
protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }

然后让我们的Activity继承BaseActivity就可以了

  1. 随时随地退出App
    我们想实现的效果是在应用程序中的任意一个Activity都能finish掉所有的Activity,这样我们就不用连续的按back键退出程序了
    新建ActivityCollector类作为活动管理器
public class ActivityCollector {
    public static List<Activity> activities = new ArrayList<Activity>();

    public static void addActivity(Activity activity){
        activities.add(activity);
    }

    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }

    public static void finishAll(){
        for (Activity activity: activities) {
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
    }
}

接着我们修改BaseActivity中的代码

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
        Log.d("BaseActivity", getClass().getSimpleName());
        **ActivityCollector.addActivity(this);**
    }
protected void onDestroy() {
        super.onDestroy();
        **ActivityCollector.removeActivity(this);**
    }
  1. 启动活动的最佳写法
    SecondActivity中的代码
public class SecondActivity extends BaseActivity {
    public static void actionStart(Context context, String day, String month){
        Intent intent = new Intent(context, SecondActivity.class);
        intent.putExtra("param1", day);
        intent.putExtra("param2", month);
        context.startActivity(intent);
    }
    .......
}

那么在FirstActivity中是这样启动SecondActivity的

SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值