在上一篇文章中呢,一文揭秘如何使用卡顿检测工具--BlockCanary。我们介绍了如何去检测卡顿的日志,我们封装的卡顿的日志的是放在了blockcanary 路径里,我们直接可以看到文件的,但是呢,有时候我们需要上上传到服务端,一个是便于管理,另外一个呢,我们可以以后做版本之间的对比之类的,那么我们应该怎么去上传呢,这里去讲下,我是如何做的上传的。
上传的做法可能有很多种的,比如开一个线程去扫描,并且上传,或者发生后,就立刻触发上传,也可以,根据我们的网络的状态去触发上传,笔者大概实现是去实现一个功能按钮去上传,其实都一样,都是要上传到服务端的,那么我们看看是应该怎么去实现呢。
首先呢,我在个人中心的布局页面呢,我去设计一个按钮。
代码语言:javascript复制<Button
android:id="@ id/blocksend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/block_canary">
</Button>
然后,我们在对应的acivity去做按钮的监听事件。
代码语言:javascript复制Button blockbutton=(Button) findViewById(R.id.blocksend);
blockbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BlockSendServer blockSendServer=new BlockSendServer();
blockSendServer.run();
}
});
这里的BlockSendServer 是一个线程。代码如下
代码语言:javascript复制package com.example.studayapp.until;
import java.io.File;
public class BlockSendServer extends Thread{
public void run(){
sendBlockFile();
}
private void sendBlockFile() {
String path="/blockcanary/";
File file=new File(path);
File[] s = file.listFiles();
for (int i=0;i<s.length;i ){
if (s[i].isFile()){
//上传文件
sendfile(s[i])
//上完完成就删除
s[i].delete();
}
}
}
}
sendfile的方法可以自己去实现,这里没有较大的难度。然后点击上传就开始上传卡顿的日志的文件了,这里也可以做成批量上传的。可以根据自己的实际的业务需求去设计。我们在后台只需要去实现对应的文件上传的接口,并且讲上传的文件,进行处理。在上传的时候,我们可以上传设备和应用的信息到服务端,我们服务端,拿到信息,对于信息归类,最后数据存入到数据库,在前端做一个展示的页面即可。用于开发去搜索。