240 发简信
IP属地:陕西
  • 120
    Carson带你学Android:这是一篇清晰易懂的Rxjava入门教程

    前言 Rxjava由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。本文主要: 面向 刚接触Rxjava的初学者 提供了一份 清...

  • 看楼主在文章里描述的context和Activity,Service还有Application的关系,就可以看出这里其实用了装饰者模式。虽然它们都是Context的子类,但实际很多执行逻辑都交给了ContextImpl,比如startActivity()这个函数。Activity自己实现了startActivity(),但Service和Application交由ContextImpl处理了。我们在看ContextImpl源码中startActivity这个函数:
    public void startActivity(Intent intent, Bundle options) {
    warnIfCallingFromSystemProcess();
    if ((intent.getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) == 0) {
    throw new AndroidRuntimeException(
    "Calling startActivity() from outside of an Activity "
    + " context requires the FLAG_ACTIVITY_NEW_TASK flag."
    + " Is this really what you want?");
    }
    mMainThread.getInstrumentation().execStartActivity(
    getOuterContext(), mMainThread.getApplicationThread(), null,
    (Activity)null, intent, -1, options);
    }
    就明白了为什么要加这个Flag了。

    Android面试一天一题(10 Day)

    有些东西,大家天天都能看到,但并不一定了解和在意它。在Android开发中,加载资源,启动一个新的Activity,获取系统服务,获取数据库路径,创建一个View等都会使用到...

  • 因为Handler执行的是异步任务,当一个Message还在MessageQueue中等待执行的时候,有可能Activity已经finish。所以整个内存泄漏的关系链应该是这样的:
    Message.mTarget指向Handler,而Handler又是一个非静态内部类,持有了当前Activity实例。所以会引发暂时性的内存泄漏,如果Message被执行了就会释放,这是Activity的内存泄露也就解除了。

    Android面试一天一题(8 Day)

    Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例(MessageQueue),应用程序的主线程不断地从这个消息队例中获取消息(Looper),然...

  • @SuperLino // How long we allow a receiver to run before giving up on it.
    static final int BROADCAST_FG_TIMEOUT = 10*1000;
    static final int BROADCAST_BG_TIMEOUT = 60*1000;
    前台进程的广播 ANR是10秒,后台进程是60秒。
    可以看下ActivityManagerService源码

    Android面试一天一题(2 Day)

    面试题:用广播来更新UI界面好吗? 做为Android四大组件之一的,广播被很多人所熟知,可算是一种非常方便的解耦组件的手段。常用的方式是直接调用Context的接口(sen...

  • Input系统会通过socket pair 跨进程通知到ViewRootImpl中类型为WindowInputEventReceiver对象,WindowInputEventReceiver是ViewRootImpl的内部类,继承自InputEventReceiver。所以楼主说的从硬件到java层,事件最开始的应该是进入WindowInputEventReceiver中的dispatchInputEvent方法,接着会进入onInputEvent方法,最后调用了ViewRootImpl的enqueueInputEvent方法。到这里就和楼主说的一致了。

    ViewRootImpl源码分析事件分发

    前面讲到View与WindowManager与ViewRootImpl中只讲到了ViewRootImpl是如何触发View的绘制的,但ViewRootImpl的功能可不只是绘...