安卓Android面试题面试面了个试

Android面试简录——组件2

2015-04-03  本文已影响362人  nancymi

自定义组件 *

【拓展】强类型与aidl文件
如果使用强类型访问apk文件中的类,一般需要将该类实现的接口提供给调用者,或者提供一个aidl文件(mobile.android.file.explorer.widget包中),如:
package mobile.android.file.explorer.widget;
interface MyInterface {
String getName();
}
在编译Android工程时ADT会在gen目录中自动生产MyInterface接口,直接引用该接口即可。

【拓展】判断四大应用程序组件是否安装
1.BroadcastReceiver:(与Activity类似)
PackageManager packageManager = new PackageManager();
Intent intent = new Intent("mobile.android.MYBROADCAST");
List<ResolveInfo> resolveInfos = packageManager.queryBroadcastReceivers(
intent, PackageManager.GET_INTENT_FILTERS);
if (resolveInfos.size() == 0)
Log.d("Broadcast Action", "不存在");
2.Service(AIDL Service):AIDL Service在调用时需要使用bindService进行绑定,如果AIDL Service不存在则绑定失败。
if (! bindService(new Intent("mobile.android.IMyService"),
serviceConnection, Context.BIND_AUTO_CREATE)) {
Log.d("AIDL Service", "不存在");
}
3.ContentProvider:根据ContentResolver对象的相应方法的返回值进行判断。
Uri uri = Uri.parse("content://mobile.android.regioncontentprovider/cities");
Cursor cursor = getContentResolver().query(uri,
new String[] {"city_code as_id", "city_name"}, null, null, null);
if (cursor == null)
Log.d("Content Provider", "不存在");

【拓展】Java与JavaScript交互的传统方法
在Java代码中通过占位符替换的方式向JavaScript脚本中传递参数。
JavaScript代码:
<script language="javascript">
function myFun(age, salary) {
//JavaScript脚本
};
myFun(#age#, #salary#);
</script>
将整个JavaScript脚本读到内存中,并将#age#和#salary#替换成相应值,再执行JavaScript脚本。
有返回值:使用alert函数弹出一个对话框,或者在JavaScript中通过HTTP请求发送一个返回值。


上一篇下一篇

猜你喜欢

热点阅读