android应用程序安装目录及android开发相关

1,第3方android应用程序的安装目录默认在/data/app/下,可以看到此目录下有很多apk文件;

2,系统提供的应用程序安装在/system/app/下,同样在这里可以看到很多apk文件;

3,sd卡存储挂载在/storage/sdcard0/下;

4,getApplicationContext().getPackageName()可以获取应用程序的包名,详情查看context类的相关信息;

5,关于登录某一app填写注册信息的时候,如果不想让用户一步步回退到前一个activity的方法,如A->B->C->D->E,当在E的activity时想重新填写信息时此时应该直接退到A,

解决方法:如在B发出启动C的intent后直接调用finish()方法,把B从堆中清除掉,然后依次,当在E处想要重新填写时按back键就直接到A了。

6,抽象方法一定在抽象类中,抽象类中可以包含抽象方法也可以不包含抽象方法;

7,单例模式,static关键字,类方法和实例方法的区别;final关键字,定义常量;

8,android的对话框有2中种,PopupWindow和AlertDialog;AlertDialog是位置固定且非线程阻塞的,而PopupWindow是位置随意且线程阻塞的;

9,关于tabhost,Container for a tabbed window view. This object holds two children: a set of tab labels that the user clicks to select a specific tab, and a FrameLayout object that displays the contents of that page. 

10,activity之间切换过程需要动画显示时可以在startactivity(intent)或是finish()后立即调overridePendingTransition(int enterAnim, int exitAnim)方法。定义enteranim和exitanim的动画资源。

11,各种数字类型转换成字符串型:String s = String.valueOf( value); // 其中 value 为任意一种数字类型。
字符串型转换成各种数字类型:
String s = "169";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );


12,JSON 对象:1,数据在名/值对中;2,数据由逗号分割;3,花括号保存对象;4,方括号保存数组;5,对象可以包含多个名/值对;

13,注意:onSaveInstanceState()方法的默认实现

如果开发者没有覆写onSaveInstanceState()方法, 此方法的默认实现会自动保存activity中的某些状态数据, 比如activity中各种UI控件的状态.

 android应用框架中定义的几乎所有UI控件都恰当的实现了onSaveInstanceState()方法, 因此当activity被摧毁和重建时, 

这些UI控件会自动保存和恢复状态数据. 比如EditText控件会自动保存和恢复输入的数据, 而CheckBox控件会自动保存和恢复选中状态. 

开发者只需要为这些控件指定一个唯一的ID(通过设置android:id属性即可), 剩余的事情就可以自动完成了. 

如果没有为控件指定ID, 则这个控件就不会进行自动的数据保存和恢复操作.

onSaveInstanceState()方法适合保存什么数据

由于onSaveInstanceState()方法方法不一定会被调用, 因此不适合在该方法中保存持久化数据, 例如向数据库中插入记录等. 

保存持久化数据的操作应该放在onPause()中. onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等.

14,注意在不同activity间共享数据时请慎用public static ,对于如bitmap,drawable等不可序列化的对象,android系统可能会抛出非常著名的异常类型(budget),此时不要靠虚拟机自动进行垃圾回收。有一种替代方案就是使用Application context,通过Context.getApplicationContext()或是Context.getApplication()获取Application Context,这种方式获取的只是Context对象,理想的方式是获得一个类的对象。

abstract  Context getApplicationContext()
Return the context of the single, global Application object of the current process.
Activity.this是本activity的上下文,注意这个context是不能来实现不同activity间的数据共享的,

这个Context就像web中的Application一样,生命周期和应用程序一样长。

例:通过全局Application类共享数据

   MyApp extends Application{
       String var;
        public void setVar(String var){
             this.var = var;
        }
   }
   在Manifest.xml中<Application>标签中 android:name=".MyApp" ,其它Activity中调用getApplication()获取该全局对象
15,android提供了3中menu,分别是:(1)options menu and action bar (2)context menu and contextual action mode (3)Popup menu 
参见:http://developer.android.com/guide/topics/ui/menus.html
16,注意理解抽象类的静态成员方法;
17,android sdk中有很多接口中只有static型的数据成员,这些数据成员都是static final的,这种接口就成了一种很便捷的用来创建常量组的工具,在javaSE5之前,这是产生与C和C++中的enum具有相同效果的类型的唯一途径。而在有了javaSE5以后,就可以使用更加灵活而强大的enum关键字了。

18,Activity的大致绘制流程:measure(int widthMeasureSpace,int heightMeasureSpace)-》layout(int l, int t, int r, int b)-》draw(Canvas canvas);

说明:layout(包括measure和layout过程)measure过程测量viewgroup及其子view的大小并保存到各自view的属性成员中;layout过程则是定位各viewgroup及其子view的相对与各自父viewcontainer的距离,draw的过程是依据根view的坐标然后获取个子view相对于父view的距离来定位子view的坐标并绘制需要绘制的view。

19,字符串对象string,stringbuffer,stringbuilder的区别:(1)string类是不可变的类,任何对string对象的操作都会引发新的string对象的生成;(2)stringbuilder类和stringbuffer类都是可变的类,区别在与stringbuffer是线程安全的,stringbuilder不是线程安全的,stringbuilder对象操作效率高于stringbuffer;

20,Android系统根目录下data/data/包名和/sdcard/Android/data/包名的区别;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值