今年4月份学的安卓,其实基础的都还没有掌握,然后7月份开始了一个项目2期的功能完善,百度了不少,哈哈哈
然后越发觉得自己能力不住,因为项目中保存离线数据用的是郭神的litepal,中草了他的android第一行代码2版来从基础的开始学习,然后决定还是要有学习笔记,选择放在博客上,舒服,万一有人觉得我理解独到呢。
这篇博客主要是4点:隐私intent;intent传参;生命周期的自己的理解;savedInstanceState的理解。
话不多说,开始,希望有新人我们可以互相借鉴学习。
1.隐式activity学习:
可以不需要指定上下文对象,直接用
Intent intent1 = new Intent("android.intent.action.secendActivity");
然后在页面中可以直接对intent.addCategory可以用来限制是否能跳转成功。
在manifest中中指定该页面的category:
<category android:name="com.huqi.activity.aintent"/>
那么就需要在代码中加上才能成功跳转:
Intent1.addCategory("com.huqi.activity.aintent");
1.2.通过intent.action来调取系统的一些东西来操作:
使用了
Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:8888"));
访问系统拨号功能,返回回到程序。
更多Android中Intent的各种常见作用:个人觉得他总结的挺详细的http://www.jianshu.com/p/5bad45cc110b
2.关于activity的生命周期自己的总结:
首次进入执行的步骤,可以理解成到了onresume(),该页面才被看见。
oncreat()->onstrat()->onresume();
这时候原来页面的activity是进入onpause(),暂停,当dialog.dismiss后又执行onresume()显示。
当页面发生intent点击跳转事件后:
Onpause()->onstop();
一般来说是不会进入ondestroy()销毁,除非内存不足。
所以当下个页面finish后,返回本页面:
Onrestrat()->onstrat()->onresume()显示。
如果是内存不足系统杀死,finish则加载上一个界面要重新从oncreat()->onresume();即还是会成功返回上一个页面,但上个页面保存的数据会丢失。
当该页面执行finish返回操作:
Onpause()->onstop()->ondestroy()。
3.intent传值跳转:
Intent.put/get传值:
intent.putExtra("name","value//可boolean,int,string,float,数组..")
Intent Resultintent = getIntent();
intent.getStringExtra("name");
intent.getIntExtra("name");
intent.getStringArrayExtra("name");
传Bundle(未测试):
Bundle bundle = new Bundle();
bundle.putString("key","value");
intent.putExtra("name",bundle);
Intent Resultintent = getIntent();
intent.getBundleExtra("name");
传对象,再项目中一般会这个做:
Bundle bundle = new Bundle();
bundle.putSerializable("astation", station);
intent.putExtras(bundle);
station = (Station) intent.getSerializableExtra("astation");
Station类需要implements Serializable;
5对savedInstanceState()简单的了解:
当该页面执行ondestroy()时可以通过实现savedInstanceState(),同样可以保存多种类型的数据。
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
String data ="you want sava date";
outState.putString("name",data);
}
当再次进入这个页面:只需要对oncreat()方法的savaInstanceState判断。这个方法很适合用户再次进入页面查看其上次选项勾选情况。(或许)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState!=null){
String data = savedInstanceState.getString("name");
//do you want do!
}
肯定有很多不足的地方,很高兴能够接收指正,小白,一步一步的坚持,希望自己能在这儿写很多心得和学习总结,即使美没人看,但万一有人需要呢。