类库使用记录,个人使用,以便查阅

来源:互联网 发布:unity3d怎么播放动画 编辑:程序博客网 时间:2024/05/21 05:17

CrashHandler需要权限

<!-- 不依赖Activity的Context弹出Dialog --><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><!-- 检查是否wifi网络 (如果需要上传日志) --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 使用网络上传日志 (如果需要上传日志) -->   <uses-permission android:name="android.permission.INTERNET" />

如何使用CrashHandler

  • 1/2 在自定义的MyApplication内注册CrashHandler
    public class MyApplication extends Application {        @Override        public void onCreate() {            super.onCreate();            /* 注册crashHandler,保存日志但不上传到服务器 */            CrashHandler.getInstance().init(getApplicationContext(), null);            /* 注册crashHandler,保存日志并自动上传到服务器 */            CrashHandler.getInstance().init(getApplicationContext(), SendService.class);            // 根据你与服务器的交互协议,实现 SendService,        }    }
  • 2/2 在 AndroidManifest.xml 内注册你的MyApplication
<application  android:name="com.xxx.MyApplication"  … >    <activity> … </activity></application>  

CrashHandler如何能自动上传日志到服务器?

  • 请根据你与服务器的交互协议,实现 SendService, 示例:
    public class SendService extends AbsSendReportsService {        @Override        public void sendZipReportsToServer(File reportsZip, NotificationHelper notification) {            AjaxParams params = new AjaxParams();            try {                params.put("reportsZip", reportsZip);            } catch (FileNotFoundException e) {                e.printStackTrace();            }            FinalHttp fh = new FinalHttp();            fh.post("http://server.com/upload.php", params, new AjaxCallBack<String>() {                // 如果你的上传方法可以统计进度,还可以考虑在通知栏更新进度                // 更新进度notification.refreshProgress(float)                // 发送完毕notification.onSendFinish(AbsSendReportsService)                @Override                public void onSuccess(String t) {                    stopSelf();// 无论成功还是失败,都应该停止服务                }                @Override                public void onFailure(Throwable t, String strMsg) {                    stopSelf();// 无论成功还是失败,都应该停止服务                }            });           }     }

Logg日志模块

  • L.d("Hello~~");

  • Eclipse Logcat输出

    • 简单,你只需关心要Log的 内容
    • 自动用类名填充 TAG
    • 自动Log 方法名
    • 自动Log 文件名行号
    • Eclipse的LogCat里面双击, 转跳到Java文件 相应行
      (过段时间再来调试,有没有感觉看不懂log,找不到log语句在哪里?)
    • 可以把 日志保存 到文件
    • 可以 上传日志 到服务器

Logg需要权限

<!-- 检查是否wifi网络  (如果需要上传日志)--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 使用网络上传日志  (如果需要上传日志)--><uses-permission android:name="android.permission.INTERNET" />

如何使用Logg

  • 1/2 开启Logg

建议在Application里面执行,或者做一个菜单让用户在需要的时候自行开启
如果不启用,Logg将什么都不做,不会耗费系统资源

L.setEnableLogcat(true);// 启用Logcat输出
  • 2/2 使用
Logg.d("Hello~~");

Logg如何保存日志?

// 启用保存日志功能// 日志文件在/data/data/com.xxxL.setEnableLogToFile(true, getApplicationContext());

Logg如何上传日志到服务器?

  • 启用保存日志功能
  • 然后
// SendService extends AbsSendReportsServiceLogg.sendReportFiles(getApplicationContext(), SendService.class);
  • 注意,你需要根据你与服务器的协议,实现SendService

UpdateHelper自动更新模块

UpdateHelper需要权限

   <!-- 使用网络 -->   <uses-permission android:name="android.permission.INTERNET" />   <!-- 更新apk文件会下载到sd卡 /mnt/sdcard/com.xxx -->     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如何使用UpdateHelper

  • 0/2 使用
// 需要实现 parser 和 normalUpdateListener new UpdateHelper(this, parser, normalUpdateListener).check("http://192.168.1.100/checkUpdate.php");
  • 1/2 根据与服务器的交互协议,实现 parser.示例:
        /** 解析服务器信息,并把信息存入UpdateInfoBean */        AbsUpdateInfoParser parser = new AbsUpdateInfoParser() {            @Override            public UpdateInfoBean parse(String info) {                // 解析服务器返回的info                // ...                UpdateInfoBean infoBean = new UpdateInfoBean();                infoBean.setVersionCode("10");                infoBean.setVersionName("beta1");                infoBean.setWhatsNew("修复了xx bug");                infoBean.setDownUrl("http://server.com/xx_beta1.apk");                return infoBean;            }        };
  • 2/2 根据你的业务逻辑,实现 normalUpdateListener.示例:
        NormalUpdateListener normalUpdateListener = new NormalUpdateListener() {            @Override            public void onCheckStart() {                // 可以在这提示用户正在检查更新            }            @Override            public void onDownloadStart() {                // 如果用户选择下载更新,这个方法会被调用            }            @Override            public void onCheckFinish() {                // 检查完成(没有可用更新,或者检查更新中途出现异常)                // 例如你是在程序Loading界面进行检查更新,那么现在可以跳过Loading进入程序首页了            }            @Override            public void onCancel() {                // 用户不想更新,选择了"下次再说"                // 例如你是在程序Loading界面进行检查更新,那么现在可以跳过Loading进入程序首页了            }        };

AbsSendReportsService文件后台发送模块

通过上文,你应该有注意到这个AbsSendReportsService的使用方法了.
这也是一个独立的模块,可以根据需要使用

暂未实现队列功能,因此不推荐连续多次调用

如何使用

        Intent intent = new Intent(ctx, sendService);// 根据服务器交互协议,实现sendService extends AbsSendReportsService        intent.putExtra(AbsSendReportsService.INTENT_DIR, "/mnt/sdcard");// 要发送的文件所在目录        intent.putExtra(AbsSendReportsService.INTENT_EXTENSION, ".log");// 要发送的文件后缀名        startService(intent);// 服务启动后,会把指定目录下有指定缀名的文件打包成zip文件发送.
  • 注意,你需要根据你与服务器的协议,实现SendService
0 0
原创粉丝点击