最近写代码需要用到多个activity,然后就好奇一个问题,除了mainactivity以外,其他的activity是怎么启动的,退出之后是否还驻留?可能因为没有系统性学习安卓,都是边查边写,所以对这些不太清楚,今天刚好有机会试一下,记录一下。
测试这个的初衷,还是想试一下,多个activity共用一个socket的情况。
现在是两个activity共用一路socket,在oncreate的最后,运行创建线程接收数据的代码。
接收到数据的话,打印一行日志。
然后启动发送端进行测试。
测试的结果比较有意思,首先,App启动的时候,不能接收到信息,也就是说这时候其他activity并没有被激活。
然后跳转到对应页面的时候,就开始接收到消息了,也就是说这个时候oncreate才开始运行。
这里启动的代码用的是
startActivity(new Intent(this, ActivityFollowCar.class));
然后如果我返回上一页,这里用的是actionBar,设置了一个返回按钮
private void setCustomActionBar() { ActionBar actionBar = getSupportActionBar(); // 获取ActionBar if (actionBar != null) { actionBar.setTitle("关于"); // 设置ActionBar的标题 // actionBar.setSubtitle("请详细阅读"); // 副标题 actionBar.setDisplayHomeAsUpEnabled(true); // 设置返回按钮 } } // 监听返回按钮,如果点击返回按钮则关闭当前Activity @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == android.R.id.home) { this.finish(); return true; } return super.onOptionsItemSelected(item); }
执行了这个操作之后,还是能收到的,也就是activity实际上还在运行。
然后又进入另一个activity,另一个activity也能收到消息了,这时候两个activity交替收到消息,但是顺序并不是严格的交替,有时候某个activity会连续收到两个。