$NDK_HOME/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/arm-linux-androideabi/bin/nm lib/armeabi/libanyradio-jni.so
参考
Android NDK隐藏jni动态库的内部符号表
public class testjava{
public static void main(String [] args){
System.out.println("HelloWorld!");
}
}
做开发块3年 今天鼓起勇气把这个例子拿出来分析下,原来不敢 是怕别个说我一菜B 学java几个月还把这个例子拿出来讲解,可能只是我们习惯上去用 而忽略了他的原理和作用,不废话切入正题:
public static void main(String [] args)
1. public是一个修饰符,只要是标识一个方法能被调用的权限 权限分为(public 想让所有类都可以调用这个方法或属性就用它
protected 想让它的子类能调用这个方法或属性就用它
default 想让同一包中的类调用它就用它
private 同一类 中才能调用
static 用它修饰的方法或属性可以不new这它所在的类就可以调用它
final 用它修饰的方法不可以覆写,属性不可以再赋值,只能在声明的时候赋值
abstract 用它修饰的类为抽象类,方法为抽象方法
native 直接操纵计算机硬件时要声明为native方法
synchronized 想让这个方法不能被两个对象同时调用就用它)
在jdk1.4之前没有规定main方法一定要是public方法,因为如果规定了一定是public会带来隐患(这个我还在找资料和测试,如果已经做过资料分析和测试,可以提前告诉我,跪谢!)当时sun公司还没有能解决好这个问题.
2. static说明这个方法是静态方法,静态方法不能访问实例字段,但是可以访问自身类中的静态字段,main方法是且必须是一个静态方法,所以static必须写.
3.void方法表示是否有返回值,方法是void说明方法是可以重写,意思就是main方法是可以重写的.
4.main:java虚拟机都是从main方法作为入口函数.
5.String[]这个好多人认为没有用处,可能是你用的不多,我们开发的时候过多的时候没有注意细节,String[] 这个字符串数组是保存运行main函数时输入的参数的,例如main函数所在的类名为test 那么你在cmd运行 java test a b c 时,args[0] = a ,args[1]=b, args[2]=c 你就可以在你的程序中调用你输入的这些变量, 今天在晚上看到一个贴说 String[] 是java的一大败笔 我笑而不语,打个比方,你跑去上厕所,说厕所的们真他妈的没有用 我只是进去拉屎,要们做什么,难道拉在门上,还有哥比方更精神:用了这么多年的显示器,感觉他妈的显示上的按钮完全他妈的以摆设.
你把String []换成int[]看看编译没有问题 但是不能运行
6 args:args=arguments 是你的函数的形参。该单词可以翻译为“入口参数”.
这个args你可以随便换成什么字符 shitargs fuckargs 程序一样跑出和args一样的结果,args是不记仇的
呵呵 终于些完啦,松了口气,继续去找找这个简单而又不简单的一个小程序的其他方面的资料
StatusBarManager的使用
public static final int DISABLE_EXPAND = View.STATUS_BAR_DISABLE_EXPAND;
public static final int DISABLE_NOTIFICATION_ICONS = View.STATUS_BAR_DISABLE_NOTIFICATION_ICONS;
public static final int DISABLE_NOTIFICATION_ALERTS
= View.STATUS_BAR_DISABLE_NOTIFICATION_ALERTS;
public static final int DISABLE_NOTIFICATION_TICKER
= View.STATUS_BAR_DISABLE_NOTIFICATION_TICKER;
public static final int DISABLE_SYSTEM_INFO = View.STATUS_BAR_DISABLE_SYSTEM_INFO;
public static final int DISABLE_NAVIGATION = View.STATUS_BAR_DISABLE_NAVIGATION;
public static final int DISABLE_BACK = View.STATUS_BAR_DISABLE_BACK;
public static final int DISABLE_CLOCK = View.STATUS_BAR_DISABLE_CLOCK;
public static final int DISABLE_NONE = 0x00000000;
public static final int DISABLE_MASK = DISABLE_EXPAND | DISABLE_NOTIFICATION_ICONS
| DISABLE_NOTIFICATION_ALERTS | DISABLE_NOTIFICATION_TICKER
| DISABLE_SYSTEM_INFO| DISABLE_NAVIGATION | DISABLE_BACK | DISABLE_CLOCK;
//使用:
public static final int backMask = StatusBarManager.DISABLE_EXPAND | StatusBarManager.DISABLE_NOTIFICATION_ICONS
| StatusBarManager.DISABLE_NOTIFICATION_ALERTS | StatusBarManager.DISABLE_NOTIFICATION_TICKER
| StatusBarManager.DISABLE_SYSTEM_INFO| StatusBarManager.DISABLE_NAVIGATION | StatusBarManager.DISABLE_CLOCK;
StatusBarManager mStatusBarManager = (StatusBarManager)getSystemService("statusbar");
mStatusBarManager.disable(backMask );//只留下back
mStatusBarManager.disable(DISABLE_NONE ); //还原状态