今年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! }肯定有很多不足的地方,很高兴能够接收指正,小白,一步一步的坚持,希望自己能在这儿写很多心得和学习总结,即使美没人看,但万一有人需要呢。