首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏代码GG之家

    Timber 经典的android Log封装库

    官网地址: https://github.com/JakeWharton/timber demo地址: https://github.com/luxiaoming/TimberDemo 第一步: compile 'com.jakewharton.timber:timber:4.1.2' } 第二步:在app(Application)里面的onCreate里面注册一下: //在这里先使用Timber.plant注册一个Tree,然后调用静态的.d .v 去使用 if (BuildConfig.DEBUG) { Timber.plant (new Timber.DebugTree()); } else { Timber.plant(new CrashReportingTree()); } 第三步:开始使用 Timber.tag("code_gg"); Timber.d("test Timber %d",10); 轻松完成。

    1.8K70发布于 2018-02-01
  • 来自专栏青蛙要fly的专栏

    Android 日志记录杂谈 - Logger,Timber,logback-android

    这里网上我又查看了下,还是老套路,发现大家推荐Timber。然后我就使用了Timber。这个其实是Log的封装库,废话不多说。脱光衣服直接上。 老套路,先附上Timber的源码地址: github.com/JakeWharton… 在build.grade中引入Timber: compile 'com.jakewharton.timber:timber :4.3.1' 在继承Application的自定义类中,设置Timber的树,其实Timber是类似管理着一片森林,具体用哪棵树是你自己这边决定的。 } } 然后就可以使用了 Timber.tag("code_gg"); Timber.d("test Timber %d",10); 然后上面的FileLoggingTree是我这边自己写的一棵树 当然Timber可以自己封装.

    90610编辑于 2024-02-18
  • 来自专栏开发者技术前线

    RxFile 一款选择多媒体文件的精巧的工具

    Override public void onCompleted() { Timber.e public void onError(Throwable e) { Timber.e public void onNext(List<File> files) { Timber.e @Override public void onCompleted() { Timber.e public void onError(Throwable e) { Timber.e

    61730发布于 2020-11-23
  • 来自专栏Android面试

    Android MVVM 架构应用实现

    { if (ex == null) { Timber.d("Bmob find success") } else { Timber.d("Bmob exception $ex") } //初始化Bmob Bmob.initialize(this, Constant.BMOB_APP_ID) //初始化Timber if (BuildConfig.DEBUG) { Timber.plant(Timber.DebugTree()) 本项目使用开源组件库:koin、timber、permissionx、BaseRecyclerViewAdapterHelper 视频:Android中高级进阶之MVVM与JetPack

    1.8K20编辑于 2021-12-27
  • 来自专栏Android常用基础

    Lifecycle你真的懂了吗?

    OnLifecycleEvent(Lifecycle.Event.ON_START) void onStart(@NotNull LifecycleOwner owner) { Timber.e ("ON_CREATE"); break; case ON_START: Timber.d("ON_START") case ON_STOP: Timber.d("ON_STOP"); break; case ON_DESTROY : Timber.d("ON_DESTROY"); break; default: ("onPause"); } @Override public void onStop(@NonNull LifecycleOwner owner) { Timber.e

    1.1K20编辑于 2022-04-24
  • 来自专栏Phoenix的Android之旅

    开发必须了解的10个Android库

    Timber Timber是一个基于Andorid Log的log库。Android的log功能不够强大,很多项目都开发了自己的log工具。 Timber可以轻松的打开和关闭log,它对string log的格式化,还有异常的处理也都有很好的支持。很多开源项目看中了Timber的这一点,用它作为核心库之一。 /* Log error */ Timber.e("Error happened") /* Log warning with params */ Timber.w("Your variable value is %s", variable) /* Log exception */ try { ... } catch (e: Exception) { Timber.e(e) } Room Room

    2.6K50发布于 2018-09-29
  • 来自专栏Programming, Open Source And

    Amazing Open Source Android Apps Written in Java

    App Name – Timber Music Player Type – Music Player Get App from – https://play.google.com/store/apps/ id=naman14.timber&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1 Find Source Code at Timber Music Player. Build around the Material Design, Timber Music Player is an open-source Android project that comes with Timber Music Player allows you to browse all your songs and sort them in albums and artists.

    1K30发布于 2018-12-27
  • 来自专栏Android 开发者

    使用 Kotlin API 实践 WorkManager

    KEY_IMAGE_URI) return try { if (resourceUri.isNullOrEmpty()) { Timber.e resourceUri) Result.success(outputData) } catch (throwable: Throwable) { Timber.e KEY_IMAGE_URI) return try { if (resourceUri.isNullOrEmpty()) { Timber.e resourceUri)) Result.success(outputData) } catch (throwable: Throwable) { Timber.e

    77130编辑于 2022-03-09
  • 来自专栏全栈程序员必看

    drone无人机app下载苹果版_drone无人机教程视频

    = null) { Timber.d("Releasing drone api instance for " + appId); droneApi.destroy if(droneMgr == null){ Log.i("lxw","Generating:"); Timber.d } else{ temp.destroy(); } } Timber.d super.onCreate(); Log.d("lxw","Binding DroidPlannerService onCreate " ); Timber.d if(droneMgr == null){ Log.i("lxw","Generating:"); Timber.d

    3.4K20编辑于 2022-09-21
  • 来自专栏Android机动车

    实用的 Android 开源库整理

    GreenDao GreenDao是一个开源的Android ORM框架,更好的操作SQlite,提供友好的接口操作底层数据库的操作 Realm 简单快速的存储,节省更多的开发时间,是一个移动设备的数据库 Timber Timber是一个开源的log框架 compile 'com.jakewharton.timber:timber:4.5.1' Androig GPU Image 提供了基于 OpenGL的图像滤镜框架

    89510发布于 2018-08-03
  • 来自专栏Android 开发者

    使用 Dagger 自定义 WorkManager

    RefreshConferenceDataUseCase ) : CoroutineWorker(ctx, params) { override suspend fun doWork(): Result { Timber.i return try { refreshEventDataUseCase(Unit) Timber.d("ConferenceDataService finished Result.success() } catch (e: Exception) { Timber.e("ConferenceDataService failed. ExistingWorkPolicy.KEEP, conferenceDataWorker) .result operation.addListener( { Timber.i

    1.1K60编辑于 2022-09-23
  • 来自专栏老蒋专栏

    适合设计师的13个免费新英文字体

    第一、Timber Free Font 字体地址:https://www.behance.net/gallery/23357757/Timber-Free-Font 第二、Cicero Sans Negrita

    1.2K40编辑于 2021-12-27
  • 来自专栏一个会写诗的程序员的博客

    20+个很棒的Android开源项目

    Timber 难度: 高级. ? Open Source Timber 一个很漂亮的, 功能完善的音乐播放器.

    79520发布于 2018-08-17
  • 来自专栏CNCF

    Tremor项目

    类似的CNCF或其他的项目: Logstash、Fluentd、InfluxDB、timber.io Vector 贡献交流: https://github.com/wayfair-tremor/tremor-runtime

    74820发布于 2020-09-14
  • 来自专栏用户4077185的专栏

    Android | 关于 OOM 的那些事

    val manager = requireContext().getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager Timber.e ("app maxMemory ${manager.memoryClass} Mb") Timber.e("large app maxMemory ${manager.largeMemoryClass } Mb") Timber.e("current app maxMemory ${Runtime.getRuntime().maxMemory() / 1024 / 1024} Mb") var count = 0 val list = mutableListOf<ByteArray>() while (true) { Timber.e("count $count Runnable { Thread.sleep(1000000000) }) thread.start() count++ Timber.e

    2.8K20编辑于 2023-05-26
  • 来自专栏非著名程序员

    基于开源项目搭建属于自己的技术堆栈

    这是就遇到了 timbertimber 是 JakeWharton 开源的一个日志记录库,它的特点是可扩展的框架,开发者可以方便快捷的集成不同类型的日志记录方式,例如,打印日志到 Logcat、打印日志到文件、打印日志到网络等, timber 通过一行代码就可以同时调用多种方式。 timber 的思想很简单,就是维护一个森林对象,它由不同类型的日志树组合而成,例如,Logcat 记录树、文件记录树、网络记录树等,森林对象提供对外的接口进行日志打印。 最终我们的日志记录模块将由 timber+Logger+LogUtils 组成,当然轮子找到了,轮子的兼容合并就得靠我们自己实现了,同时我们还得增加打印到文件的日志树和打印到网络的日志树实现。 4.

    2.5K70发布于 2018-02-09
  • 来自专栏Android-JessYan

    看到如此多的MVP+Dagger2+Retrofit+Rxjava项目,轻松拿star,心动了吗?

    rxjava必要要使用ErrorHandleSubscriber(默认实现Subscriber的onError方法),此监听才生效 */ Timber.w public void onCreate(Application application) { if (BuildConfig.LOG_DEBUG) {//Timber 日志打印 Timber.plant(new Timber.DebugTree()); } if (BuildConfig.USE_CANARY public void onCreate(Application application) { if (BuildConfig.LOG_DEBUG) {//Timber 日志打印 Timber.plant(new Timber.DebugTree()); } //leakCanary

    3.3K30发布于 2018-09-13
  • 来自专栏用户4077185的专栏

    【玩转 Cloud Studio】Android 中关于 OOM 的那些事

    val manager = requireContext().getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager Timber.e ("app maxMemory ${manager.memoryClass} Mb") Timber.e("large app maxMemory ${manager.largeMemoryClass } Mb") Timber.e("current app maxMemory ${Runtime.getRuntime().maxMemory() / 1024 / 1024} Mb") var count = 0 val list = mutableListOf<ByteArray>() while (true) { Timber.e("count $count Thread.sleep(1000000000) }) thread.start() count++ Timber.e

    1.8K30编辑于 2023-05-25
  • 来自专栏.NET企业级解决方案应用与咨询

    C#开发BIMFACE系列33 服务端API之模型对比4:获取模型对比结果

    "diffType": "CHANGE", 1946 "elementId": "198749", 1947 "elementName": "Wall - Timber "diffType": "CHANGE", 1957 "elementId": "234869", 1958 "elementName": "Wall - Timber "diffType": "CHANGE", 1968 "elementId": "418079", 1969 "elementName": "Wall - Timber "diffType": "CHANGE", 1979 "elementId": "422243", 1980 "elementName": "Wall - Timber "diffType": "CHANGE", 1990 "elementId": "427092", 1991 "elementName": "Wall - Timber

    82520发布于 2020-03-18
  • 来自专栏Android补给站

    AwesomeGithub组件化探索之旅

    appBridge = BridgeProviders.instance.getBridge(AppBridgeInterface::class.java) Timber.d builder.addHeader("Authorization", authorization) val response = chain.proceed(builder.build()) Timber.d DefaultWebViewBridge::class.java) } private fun initTimber() { if (BuildConfig.DEBUG) { Timber.plant (Timber.DebugTree()) } } private fun initRouter() { if (BuildConfig.DEBUG) {

    72610发布于 2020-02-18
领券