Android入门(8):活动的实用小技巧

上一篇:Android入门(7):活动的启动模式

知晓当前界面是哪一个活动

​ 其实如果每个活动都在onCreate方法打印出来,对于我们写起来实在不方便,我们其实可以新建一个BaseActivity类来实现,在这个类里面打印,然后其他活动类都继承这个类即可。

​ 注意这里BaseActivity和普通活动的创建方式并不一样,因为我们不需要BaseActivity在AndroidManifest.xml中注册,所以创建一个普通的Java类就好了,然后继承AppCompatActivity,并重写onCreate()方法:

public class BaseActivity extends AppCompatActivity {
    private static final String TAG = "BaseActivity";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: "+getClass().getSimpleName());
    }
}

然后在其他活动继承AppCompatActivity改为BaseActivity即可:
在这里插入图片描述

随时退出程序

​ 假设你想在ActivityTest的ThirdActivity直接退出程序,该怎么做呢?你应该把所有的活动都finish才行,那如何去获得这所有的活动呢?我们可以通过一个ActivityCollector类作为活动管理类,在BaseActivity中onCreate方法启用添加活动方法(addActivity),destroy启用移除方法(removeActivity)。我们新建一个ActivityCollector类:

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

    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,如上面说的onCreate方法启用添加活动方法(addActivity),destroy启用移除方法(removeActivity)

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "onCreate: "+getClass().getSimpleName());
    ActivityCollector.addActivity(this);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    ActivityCollector.removeActivity(this);
}

然后我们想通过ThirdActivity按钮直接退出只需绑定ActivityCollect.finishAll()方法即可

​ 我们还可以在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码如下所示:

android.os.Process.killProcess(android.os.Process.myPid);

​ 其中,killProcess()方法用于杀掉一个进程,它接受一个进程id参数,我们可以通过myPid()方法来获得当前程序的进程id。需要注意的是,killProcess()方法只能用于杀掉当前程序的进程,我们不能使用这个方法去杀掉其他程序。

启动活动的最佳写法

​ 假设,你想启动SecondActivity,但是你不知道SecondActivity需要传输哪些数据,这时你该怎么办呢?

修改SecondActivity中的代码:

public static void actionStart(Context context, String data1, String data2) {
    Intent intent = new Intent(context, SecondActivity.class);
    intent.putExtra("data1",data1);
    intent.putExtra("data2",data2);
    context.startActivity(intent);
}

修改FirstActivity中代码:
在这里插入图片描述
as会给出我们提示,同时我们还可以规定参数即为键值

总结:这些实用的小技巧都是前人积累的经验,我们平时写代码时也应注意积累经验,这些经验可以让我们写起代码给加轻松。

下一篇:Android UI (1):常用控件的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值