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

Android面试简录——组件3

2015-04-07  本文已影响805人  nancymi

四大应用程序组件


Android中的窗口:Activity

【拓展】通过剪切板传递复杂数据
问题提出:高版本中支持剪切板保存Intent支持的类型,但是低版本中不支持。
解决办法:使用字符串传递任何二进制数据(包括可序列化对象、图像的等)。
1.将可序列化对象转换成Base64编码,然后保存到剪切板中:
Intent intent = new Intent(this, MyActivity3.class);
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
Data clipboardData = new Data();
clipboardData.id = 6666;
clipboardData.name = "通过Clipboard传递的数据";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String base64Str = "";
try {
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(clipboardData);
base64Str = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
oos.close();
} catch (Exception e) {
}
clipboard.setText(base64Str);
startActivity(intent);
2.从剪切板中获取Base64编码格式的字符串,并进行解码,最后还原成Data对象。
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
String base64Str = clipboard.getText().toString();
byte[] buffer = Base64.decode(base64Str, Base64.DEFAULT);
ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
try {
ObjectInputStream ois = new ObjectInputStream(bais);
Data data = (Data) ois.redObject();
textView.setText(base64Str + "\n\ndata.id:" + data.id + "\ndata.name" + data.name);
} catch (Exception e) {
}


广播接收器:Broadcast Receiver


服务:Service


内容提供者:Content Provider

上一篇下一篇

猜你喜欢

热点阅读