android 滑动加载数据地图实现10万级数据加载卡死怎么解决?

Android - 百度地图打包混淆代码后地图崩溃的解决方法
之前开发项目用到百度地图,测试的时候没有问题;但是,一打包加混淆之后就出现地图崩溃的问题;项目已经完结,趁有闲暇时间赶紧分享一下自己的解决方案。
问题现象:
之前做百度地图开发时出现一些小问题、一搜发现大家似乎都遇到过这样的问题、大家知道百度地图API需要申请Key,填写安全码。
安全码的组成规则为:签名证书的sha1值 &;& packagename(即:数字签名 分号 包名)
debug的话、代码没有经过混淆、百度地图正常使用、只有在打包之后才有这个问题。
但是呢、基本上发布到应用市场的apk一般都是经过的、有点知识产权保护意识的都会有代码混淆、
就会用一套自己的keystore,重新设定&安全码后&、导出apk时没有报任何错误
但是当我装载手机上使用百度地图定位时、地图绘制了一大半、就死掉了、留下log控制台有这么句话
com.baidu.platform.comapi.map.MapRenderer.nativeRender(Native Method)
分析原因:
这里只贴了一句、还有很多异常信息哈、经过google查找、然后把百度地图官网又仔细读了便、果然功夫不负有心人、还是让我找到了、其实官方已经明确指出了
3.6.5 为何我的程序在不混淆之前可以运行,混淆之后不能运行了?
栅格版SDK(即1.3.5及之前的版本):
如果您使用proguard进行混淆,请在您的混淆配置文件中添加如下语句:
-keep class com.baidu.mapapi.** {*;}
矢量版SDK(即2.0.0及之后的版本):
如果是用proguard ,以下配置供参考:
#-libraryjars libs/baidumapapi_v3_1_0.jar 替换成自己所用版本的jar
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
其他混淆工具也请进行与此类似的配置,指定对mapapi中的类和方法不进行混淆。
在proguard-project.txt中添加如下(引用的是百度baidumapapi_v3_1_0.jar这版的jar包、换成自己的包就好了)、
-libraryjars libs/baidumapapi_v3_3_0.jar
-keep class com.baidu.** { *; }
-keep class vi.com.gdi.bgl.android.**{*;}
其实最后找到原因就是代码混淆时少了这行、加上之后再次导出、地图功能就可以正常使用了
-keep class vi.com.gdi.bgl.android.**{*;}没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!(Android实战)ProgressDialog+Thread实现弹出进度条数据异步加载(配有效果图)
我的图书馆
(Android实战)ProgressDialog+Thread实现弹出进度条数据异步加载(配有效果图)
2 实现说明
&& 实现流程
& Step One
弹出进度条对话框
& Step Two
执行线程,在线程中实现数据的异步加载
& Step Three
在线程数据加载完成后,调用Handler并集合数据,更新界面
Java代码 &
&&&&&&&&&&&&&&&m_Dialog=ProgressDialog.show(m_context,&"请等待...",&"正在下载安装文件,请稍后...",true); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&new&Thread(new&Runnable(){ &&&&&&&&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&&&&&&&public&void&run()&{ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&result=0; &&&&&&&&&&&&&&&&&&&&&&&&&&&&try{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String&url="http://00.00.00.00:80/nationaltest.html";
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&HttpClient&client&=&new&DefaultHttpClient();&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&HttpGet&get&=&new&HttpGet(url);&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&HttpResponse&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&response&=&client.execute(get);&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&HttpEntity&entity&=&response.getEntity();&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&long&length&=&entity.getContentLength();&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&InputStream&is&=&entity.getContent();&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&FileOutputStream&fileOutputStream&=&null;&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(is&!=&null)&{&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&File&file&=&new&File(Environment.getExternalStorageDirectory(),&"nationaltest.apk");&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&fileOutputStream&=&new&FileOutputStream(file);&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&byte[]&buf&=&new&byte[1024];&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&int&ch&=&-1;&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&while&((ch&=&is.read(buf))&!=&-1)&{&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&fileOutputStream.write(buf,&0,&ch);&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&fileOutputStream.flush();&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(fileOutputStream&!=&null)&{&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&fileOutputStream.close();&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&result=2; &&&&&&&&&&&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&&&&&&&&&&&&catch(Exception&ex){ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&result=-1;& &&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mHandler.post(new&Runnable()&{&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&public&void&run()&{&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(result==2)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&install(); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Toast.makeText(m_context,&"下载文件失败,请检查网络连接",&Toast.LENGTH_SHORT).show();&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}); &&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&m_Dialog.dismiss(); &&&&&&&&&&&&&&&&&&&&&&}}).start(); &&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&}&&&//添加异步操作
m_Dialog=ProgressDialog.show(m_context, "请等待...", "正在下载安装文件,请稍后...",true);
//mRegsiterHandler.sleep(100);
new Thread(new Runnable(){
public void run() {
//加载数据
//下载文件
String url="http://00.00.00.00:80/nationaltest.html";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
response = client.execute(get);
HttpEntity entity = response.getEntity();
long length = entity.getContentLength();
InputStream is = entity.getContent();
FileOutputStream fileOutputStream =
if (is != null) {
File file = new File(Environment.getExternalStorageDirectory(), "nationaltest.apk");
fileOutputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int ch = -1;
while ((ch = is.read(buf)) != -1) {
fileOutputStream.write(buf, 0, ch);
fileOutputStream.flush();
if (fileOutputStream != null) {
fileOutputStream.close();
catch(Exception ex){
result=-1;
//更新界面
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
if(result==2)
install();
Toast.makeText(m_context, "下载文件失败,请检查网络连接", Toast.LENGTH_SHORT).show();
m_Dialog.dismiss();
}}).start();
喜欢该文的人也喜欢没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 android 滑动加载数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信