GithubHelp home page GithubHelp logo

rxbus's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rxbus's Issues

readme setp2 compile fail

`public static final class RxBus {
private static Bus sBus;

public static synchronized get() {
    if (sBus == null) {
        sBus = new Bus();
    }
    return sBus;
}

}`

forget return Bus

`public static final class RxBus {
private static Bus sBus;

public static synchronized Bus get() {
    if (sBus == null) {
        sBus = new Bus();
    }
    return sBus;
}

}`

建议

可以提供粘性事件传递,类似eventbus的Sticky事件。

关于RxBus

看了你的这个项目的源码,发现和EventBus的原理类似,但是看到这篇文章http://www.jianshu.com/p/ca090f6e2fe2/# ,想问下这个项目和文章里的Rxbus有何异同点啊?还有就是这个项目好像并没有用到Rxjava(除了在Bus类中有用到Action1).

Crash from annotation

using the proguard setttings from yours I got.

-keepclassmembers class ** {
    @com.hwangjr.rxbus.annotation.Subscribe public *;
    @com.hwangjr.rxbus.annotation.Produce public *;
    @com.hwangjr.rxbus.annotation.Tag public *;
}

com.hwangjr.rxbus.finder.AnnotatedFinder.loadAnnotatedMethods
Caused by java.lang.NoSuchFieldException

Fatal Exception: java.lang.NoSuchFieldError

libcore.reflect.AnnotationAccess.decodeValue (AnnotationAccess.java:688)
java.lang.reflect.Method.getAnnotation (Method.java:300)
com.hwangjr.rxbus.finder.AnnotatedFinder.loadAnnotatedMethods (SourceFile:81)
com.hwangjr.rxbus.finder.AnnotatedFinder.loadAnnotatedProducerMethods (SourceFile:40)
com.hwangjr.rxbus.finder.AnnotatedFinder.findAllProducers (SourceFile:157)
com.hwangjr.rxbus.finder.Finder$1.findAllProducers (SourceFile:23)
com.hwangjr.rxbus.Bus.register (SourceFile:179)
hx520.auction.main.UploadImagePlatform.onResume (SourceFile:82)
android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1286)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)
libcore.reflect.AnnotationAccess.decodeValue

可否改进成编译时生成代码?

作者您好,非常感谢您开源此项目,我在其中学习到了很多,也模仿写了一个基于反射的RxBus。

不过,我在其中发现一些问题。一个是参数类型的问题,如基本类型还可以判断其封包,但是一些数据类型(如ListMapSet等)和包含泛型之类的参数判断较为复杂,不好处理;二是反射调用在android下的效率确实不高。

因此我开始尝试改进,用编译时自动生成绑定(Tag -> Subject)的代理.class方式。目前自己已实现了大致方向上的生成类文件和绑定操作,但还是遇到一些困难:

  1. 以Tag和调用方法的参数作为key,对应不同的Subject,在参数判断上不好操作,而且不同参数能对应一个tag的感觉指向不明确,因此我觉得一个Tag对应一种方法参数比较合适,实现难度也降低些。
  2. Subject传递参数时,是否符合其参数类型这一点依然比较难判断。最近在看ButterKnife的代码,觉得或许可以通过自定义Lint,在用户使用RxBus.post()时检查参数类型。

以上是我的部分想法,希望能与作者交流交流 (•̀ᴗ•́)و ̑̑

传递int类型数据会收不到事件

BusProvider.getInstance().post("wx_login_auth_error",1);这样收不到事件,换成
BusProvider.getInstance().post("wx_login_auth_error","1");就能收到事件

订阅不到消息

这个查找订阅类好像有局限性 如果我在一个module里面发射一个消息 然后在主app里面订阅不到消息
奥 突然发现准确来说 我是在网络层发消息 在activity里面接受 不到
@hwangjr

请问@Produce数据刷新

@produce 返回的String值该改变后。。怎么刷新Subscribe接受的数据哇?otto 有bus.register();
但是我找不到刷新Subscribe的方法。。。

写在父类中无效

com.hwangjr.rxbus:rxbus:1.0.5
io.reactivex:rxjava:1.2.3
io.reactivex:rxandroid:1.2.1

TestActivity

public class TestActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        ButterKnife.inject(this);
    }

    @OnClick(R.id.button4)
    public void onClick() {
        RxBus.get().post("test", Observable.empty());
    }
}

BaseActivity

public class BaseActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        RxBus.get().register(this);
    }

    @Subscribe(
            thread = EventThread.IO,
            tags = {
                    @Tag("test")
            }
    )
    public void test(Observable o) {
        Log.e("xxx", "test");
    }
}

点击按钮后无输出。

如果将父类方法

    @Subscribe(
            thread = EventThread.IO,
            tags = {
                    @Tag("test")
            }
    )
    public void test(Observable o) {
        Log.e("xxx", "test");
    }

移到子类就可以,不过就要每个子类都手动写上。我想写在父类中,直接继承就可以有了,怎么弄。。。

Registering the listener in base class doesn`t work

I have a some activities, I have made a Base class for them where I put the registration into the OnCreate() method, unregister the listener in the OnDestroy().
The Subscribe method is also in the Base class.
Unfortunately the messages newer arrived for the subscribers. If I move the Subscribe methods into the child class, it is working good.
Is there something I have missed, or is it a bug in the RxBus?

Check is the event is registered

Hi,

Is there any method like isRegistered or something to check if the event is registered or not?

When I'm opening an Activity which is in foreground there I'm getting exception :

Caused by: java.lang.IllegalArgumentException: Producer method for type [EventType selected_event && class Vehicle] found on type class DiscoveryActivity, but already registered by type class SpotDiscoveryActivity.

While I checked the code in Bus class line 185 you have put in check and throwing this exception.
So instead of throwing an exception you can skip the registration part and the flow will continue.
Else you can provide an isRegistered method to check if the event is already not registered only then it will subscribe to it.

As of now the app is crashing.

leakage discovered

i used leakcan and i got this leakage

In g.galaio.debug:0.58.0:178.

  • hx520.auction.main.OrderProcess has leaked:

  • GC ROOT static com.hwangjr.rxbus.RxBus.sBus

  • references com.hwangjr.rxbus.Bus.subscribersByType

  • references java.util.concurrent.ConcurrentHashMap.table

  • references array java.util.concurrent.ConcurrentHashMap$Node[].[10]

  • references java.util.concurrent.ConcurrentHashMap$Node.val

  • references java.util.concurrent.CopyOnWriteArraySet.al

  • references java.util.concurrent.CopyOnWriteArrayList.elements

  • references array java.lang.Object[].[0]

  • references com.hwangjr.rxbus.entity.SubscriberEvent.target

  • references hx520.auction.content.viewholder.item_FrameSample.display_sample

  • references com.mikhaellopez.circularimageview.CircularImageView.mContext

  • leaks hx520.auction.main.OrderProcess instance

  • Retaining: 41 KB.

  • Reference Key: 47cd8bd6-e095-46e3-9efb-07fcb9d0975c

  • Device: HUAWEI HUAWEI EVA-AL10 EVA-AL10

  • Android Version: 6.0 API: 23 LeakCanary: 1.5 00f37f5

  • Durations: watch=5840ms, gc=227ms, heap dump=6539ms, analysis=61932ms

  • Details:

  • Class com.hwangjr.rxbus.RxBus
    | static sBus = com.hwangjr.rxbus.Bus@323577056 (0x134964e0)
    | static $staticOverhead = byte[8]@323515393 (0x13487401)

  • Instance of com.hwangjr.rxbus.Bus
    | static $staticOverhead = byte[8]@323516417 (0x13487801)
    | static DEFAULT_IDENTIFIER = java.lang.String@1879122408 (0x700121e8)
    | enforcer = com.hwangjr.rxbus.thread.ThreadEnforcer$1@324884896 (0x135d59a0)
    | finder = com.hwangjr.rxbus.finder.Finder$1@324884928 (0x135d59c0)
    | flattenHierarchyCache = java.util.concurrent.ConcurrentHashMap@323483840 (0x1347f8c0)
    | identifier = java.lang.String@1879122408 (0x700121e8)
    | producersByType = java.util.concurrent.ConcurrentHashMap@323483776 (0x1347f880)
    | subscribersByType = java.util.concurrent.ConcurrentHashMap@323483712 (0x1347f840)
    | shadow$klass = com.hwangjr.rxbus.Bus
    | shadow$monitor = 0

  • Instance of java.util.concurrent.ConcurrentHashMap
    | static RESIZE_STAMP_BITS = 16
    | static threadCounterHashCode = java.lang.ThreadLocal@1969164720 (0x755f11b0)
    | static SEED_INCREMENT = 1640531527
    | static TRANSFERINDEX = 56
    | static DEFAULT_CONCURRENCY_LEVEL = 16
    | static LOAD_FACTOR = 0.75
    | static counterHashCodeGenerator = java.util.concurrent.atomic.AtomicInteger@1969164680 (0x755f1188)
    | static SIZECTL = 52
    | static ASHIFT = 2
    | static CELLVALUE = 120
    | static HASH_BITS = 2147483647
    | static MAX_RESIZERS = 65535
    | static MAX_ARRAY_SIZE = 2147483639
    | static serialVersionUID = 7249069246763182397
    | static MIN_TRANSFER_STRIDE = 16
    | static DEFAULT_CAPACITY = 16
    | static serialPersistentFields = java.io.ObjectStreamField[3]@1969164696 (0x755f1198)
    | static RESERVED = -2147483647
    | static MIN_TREEIFY_CAPACITY = 64
    | static $staticOverhead = byte[240]@1886083041 (0x706b57e1)
    | static MAXIMUM_CAPACITY = 1073741824
    | static TREEIFY_THRESHOLD = 8
    | static TREEBIN = -2147483648
    | static NCPU = 8
    | static CELLSBUSY = 48
    | static ABASE = 12
    | static U = sun.misc.Unsafe@1883224504 (0x703fb9b8)
    | static UNTREEIFY_THRESHOLD = 6
    | static RESIZE_STAMP_SHIFT = 16
    | static BASECOUNT = 40
    | static MOVED = -1879048193
    | baseCount = 5
    | cellsBusy = 0
    | counterCells = null
    | entrySet = null
    | keySet = null
    | nextTable = null
    | sizeCtl = 12
    | table = java.util.concurrent.ConcurrentHashMap$Node[16]@323724320 (0x134ba420)
    | transferIndex = 0
    | values = null
    | keySet = null
    | valuesCollection = null
    | shadow$klass = java.util.concurrent.ConcurrentHashMap
    | shadow$monitor = 0

  • Array of java.util.concurrent.ConcurrentHashMap$Node[]
    | [0] = null
    | [1] = null
    | [2] = java.util.concurrent.ConcurrentHashMap$Node@323615680 (0x1349fbc0)
    | [3] = null
    | [4] = null
    | [5] = null
    | [6] = null
    | [7] = null
    | [8] = null
    | [9] = java.util.concurrent.ConcurrentHashMap$Node@324049184 (0x13509920)
    | [10] = java.util.concurrent.ConcurrentHashMap$Node@325614048 (0x136879e0)
    | [11] = null
    | [12] = null
    | [13] = null
    | [14] = null
    | [15] = java.util.concurrent.ConcurrentHashMap$Node@323831968 (0x134d48a0)

  • Instance of java.util.concurrent.ConcurrentHashMap$Node
    | hash = 1890875546
    | key = com.hwangjr.rxbus.entity.EventType@325612352 (0x13687340)
    | next = null
    | val = java.util.concurrent.CopyOnWriteArraySet@322829232 (0x133dfbb0)
    | shadow$klass = java.util.concurrent.ConcurrentHashMap$Node
    | shadow$monitor = 0

  • Instance of java.util.concurrent.CopyOnWriteArraySet
    | static $staticOverhead = byte[8]@1883852025 (0x70494cf9)
    | static serialVersionUID = 5457747651344034263
    | al = java.util.concurrent.CopyOnWriteArrayList@322829248 (0x133dfbc0)
    | shadow$klass = java.util.concurrent.CopyOnWriteArraySet
    | shadow$monitor = 0

  • Instance of java.util.concurrent.CopyOnWriteArrayList
    | static $staticOverhead = byte[8]@1883851049 (0x70494929)
    | static serialVersionUID = 8673264195747942595
    | elements = java.lang.Object[166]@344535040 (0x14893000)
    | shadow$klass = java.util.concurrent.CopyOnWriteArrayList
    | shadow$monitor = 0

  • Array of java.lang.Object[]
    | [0] = com.hwangjr.rxbus.entity.SubscriberEvent@325613024 (0x136875e0)
    | [1] = com.hwangjr.rxbus.entity.SubscriberEvent@325668992 (0x13695080)
    | [2] = com.hwangjr.rxbus.entity.SubscriberEvent@325688512 (0x13699cc0)
    | [3] = com.hwangjr.rxbus.entity.SubscriberEvent@325709440 (0x1369ee80)
    | [4] = com.hwangjr.rxbus.entity.SubscriberEvent@325739136 (0x136a6280)
    | [5] = com.hwangjr.rxbus.entity.SubscriberEvent@325752160 (0x136a9560)
    | [6] = com.hwangjr.rxbus.entity.SubscriberEvent@325796192 (0x136b4160)
    | [7] = com.hwangjr.rxbus.entity.SubscriberEvent@325830688 (0x136bc820)
    | [8] = com.hwangjr.rxbus.entity.SubscriberEvent@325925664 (0x136d3b20)
    | [9] = com.hwangjr.rxbus.entity.SubscriberEvent@325967680 (0x136ddf40)
    | [10] = com.hwangjr.rxbus.entity.SubscriberEvent@326000480 (0x136e5f60)
    | [11] = com.hwangjr.rxbus.entity.SubscriberEvent@326028320 (0x136ecc20)
    | [12] = com.hwangjr.rxbus.entity.SubscriberEvent@326047936 (0x136f18c0)
    | [13] = com.hwangjr.rxbus.entity.SubscriberEvent@326079200 (0x136f92e0)
    | [14] = com.hwangjr.rxbus.entity.SubscriberEvent@326165312 (0x1370e340)
    | [15] = com.hwangjr.rxbus.entity.SubscriberEvent@319533504 (0x130bb1c0)
    | [16] = com.hwangjr.rxbus.entity.SubscriberEvent@329383168 (0x13a1fd00)
    | [17] = com.hwangjr.rxbus.entity.SubscriberEvent@329410112 (0x13a26640)
    | [18] = com.hwangjr.rxbus.entity.SubscriberEvent@329424192 (0x13a29d40)
    | [19] = com.hwangjr.rxbus.entity.SubscriberEvent@329440832 (0x13a2de40)
    | [20] = com.hwangjr.rxbus.entity.SubscriberEvent@329461504 (0x13a32f00)
    | [21] = com.hwangjr.rxbus.entity.SubscriberEvent@329524032 (0x13a42340)
    | [22] = com.hwangjr.rxbus.entity.SubscriberEvent@329537984 (0x13a459c0)
    | [23] = com.hwangjr.rxbus.entity.SubscriberEvent@329561472 (0x13a4b580)
    | [24] = com.hwangjr.rxbus.entity.SubscriberEvent@329595744 (0x13a53b60)
    | [25] = com.hwangjr.rxbus.entity.SubscriberEvent@329621856 (0x13a5a160)
    | [26] = com.hwangjr.rxbus.entity.SubscriberEvent@329626304 (0x13a5b2c0)
    | [27] = com.hwangjr.rxbus.entity.SubscriberEvent@329630560 (0x13a5c360)
    | [28] = com.hwangjr.rxbus.entity.SubscriberEvent@329644512 (0x13a5f9e0)
    | [29] = com.hwangjr.rxbus.entity.SubscriberEvent@329680768 (0x13a68780)
    | [30] = com.hwangjr.rxbus.entity.SubscriberEvent@329690080 (0x13a6abe0)
    | [31] = com.hwangjr.rxbus.entity.SubscriberEvent@329633664 (0x13a5cf80)
    | [32] = com.hwangjr.rxbus.entity.SubscriberEvent@329682432 (0x13a68e00)
    | [33] = com.hwangjr.rxbus.entity.SubscriberEvent@329698304 (0x13a6cc00)
    | [34] = com.hwangjr.rxbus.entity.SubscriberEvent@329712736 (0x13a70460)
    | [35] = com.hwangjr.rxbus.entity.SubscriberEvent@329730848 (0x13a74b20)
    | [36] = com.hwangjr.rxbus.entity.SubscriberEvent@329743840 (0x13a77de0)
    | [37] = com.hwangjr.rxbus.entity.SubscriberEvent@329765216 (0x13a7d160)
    | [38] = com.hwangjr.rxbus.entity.SubscriberEvent@329784960 (0x13a81e80)
    | [39] = com.hwangjr.rxbus.entity.SubscriberEvent@329793184 (0x13a83ea0)
    | [40] = com.hwangjr.rxbus.entity.SubscriberEvent@329814400 (0x13a89180)
    | [41] = com.hwangjr.rxbus.entity.SubscriberEvent@329822592 (0x13a8b180)
    | [42] = com.hwangjr.rxbus.entity.SubscriberEvent@329831424 (0x13a8d400)
    | [43] = com.hwangjr.rxbus.entity.SubscriberEvent@329845920 (0x13a90ca0)
    | [44] = com.hwangjr.rxbus.entity.SubscriberEvent@329858720 (0x13a93ea0)
    | [45] = com.hwangjr.rxbus.entity.SubscriberEvent@329945376 (0x13aa9120)
    | [46] = com.hwangjr.rxbus.entity.SubscriberEvent@329845824 (0x13a90c40)
    | [47] = com.hwangjr.rxbus.entity.SubscriberEvent@329907392 (0x13a9fcc0)
    | [48] = com.hwangjr.rxbus.entity.SubscriberEvent@329987712 (0x13ab3680)
    | [49] = com.hwangjr.rxbus.entity.SubscriberEvent@330000640 (0x13ab6900)
    | [50] = com.hwangjr.rxbus.entity.SubscriberEvent@330017888 (0x13abac60)
    | [51] = com.hwangjr.rxbus.entity.SubscriberEvent@330034944 (0x13abef00)
    | [52] = com.hwangjr.rxbus.entity.SubscriberEvent@330080480 (0x13aca0e0)
    | [53] = com.hwangjr.rxbus.entity.SubscriberEvent@330085856 (0x13acb5e0)
    | [54] = com.hwangjr.rxbus.entity.SubscriberEvent@330098304 (0x13ace680)
    | [55] = com.hwangjr.rxbus.entity.SubscriberEvent@330102560 (0x13acf720)
    | [56] = com.hwangjr.rxbus.entity.SubscriberEvent@330112832 (0x13ad1f40)
    | [57] = com.hwangjr.rxbus.entity.SubscriberEvent@330127072 (0x13ad56e0)
    | [58] = com.hwangjr.rxbus.entity.SubscriberEvent@330157056 (0x13adcc00)
    | [59] = com.hwangjr.rxbus.entity.SubscriberEvent@330207808 (0x13ae9240)
    | [60] = com.hwangjr.rxbus.entity.SubscriberEvent@330214496 (0x13aeac60)
    | [61] = com.hwangjr.rxbus.entity.SubscriberEvent@329987168 (0x13ab3460)
    | [62] = com.hwangjr.rxbus.entity.SubscriberEvent@315867232 (0x12d3c060)
    | [63] = com.hwangjr.rxbus.entity.SubscriberEvent@319159232 (0x1305fbc0)
    | [64] = com.hwangjr.rxbus.entity.SubscriberEvent@319913696 (0x13117ee0)
    | [65] = com.hwangjr.rxbus.entity.SubscriberEvent@321256160 (0x1325fae0)
    | [66] = com.hwangjr.rxbus.entity.SubscriberEvent@321588064 (0x132b0b60)
    | [67] = com.hwangjr.rxbus.entity.SubscriberEvent@322601984 (0x133a8400)
    | [68] = com.hwangjr.rxbus.entity.SubscriberEvent@322868160 (0x133e93c0)
    | [69] = com.hwangjr.rxbus.entity.SubscriberEvent@322925504 (0x133f73c0)
    | [70] = com.hwangjr.rxbus.entity.SubscriberEvent@323157600 (0x1342fe60)
    | [71] = com.hwangjr.rxbus.entity.SubscriberEvent@323209280 (0x1343c840)
    | [72] = com.hwangjr.rxbus.entity.SubscriberEvent@323257184 (0x13448360)
    | [73] = com.hwangjr.rxbus.entity.SubscriberEvent@323284480 (0x1344ee00)
    | [74] = com.hwangjr.rxbus.entity.SubscriberEvent@323346560 (0x1345e080)
    | [75] = com.hwangjr.rxbus.entity.SubscriberEvent@323384384 (0x13467440)
    | [76] = com.hwangjr.rxbus.entity.SubscriberEvent@329816800 (0x13a89ae0)
    | [77] = com.hwangjr.rxbus.entity.SubscriberEvent@329845600 (0x13a90b60)
    | [78] = com.hwangjr.rxbus.entity.SubscriberEvent@329998784 (0x13ab61c0)
    | [79] = com.hwangjr.rxbus.entity.SubscriberEvent@330033088 (0x13abe7c0)
    | [80] = com.hwangjr.rxbus.entity.SubscriberEvent@330083808 (0x13acade0)
    | [81] = com.hwangjr.rxbus.entity.SubscriberEvent@330098624 (0x13ace7c0)
    | [82] = com.hwangjr.rxbus.entity.SubscriberEvent@330111808 (0x13ad1b40)
    | [83] = com.hwangjr.rxbus.entity.SubscriberEvent@330129312 (0x13ad5fa0)
    | [84] = com.hwangjr.rxbus.entity.SubscriberEvent@330212704 (0x13aea560)
    | [85] = com.hwangjr.rxbus.entity.SubscriberEvent@330251200 (0x13af3bc0)
    | [86] = com.hwangjr.rxbus.entity.SubscriberEvent@330275232 (0x13af99a0)
    | [87] = com.hwangjr.rxbus.entity.SubscriberEvent@330284704 (0x13afbea0)
    | [88] = com.hwangjr.rxbus.entity.SubscriberEvent@330298144 (0x13aff320)
    | [89] = com.hwangjr.rxbus.entity.SubscriberEvent@330313696 (0x13b02fe0)
    | [90] = com.hwangjr.rxbus.entity.SubscriberEvent@330325632 (0x13b05e80)
    | [91] = com.hwangjr.rxbus.entity.SubscriberEvent@330085248 (0x13acb380)
    | [92] = com.hwangjr.rxbus.entity.SubscriberEvent@330111232 (0x13ad1900)
    | [93] = com.hwangjr.rxbus.entity.SubscriberEvent@330156832 (0x13adcb20)
    | [94] = com.hwangjr.rxbus.entity.SubscriberEvent@330249088 (0x13af3380)
    | [95] = com.hwangjr.rxbus.entity.SubscriberEvent@330276384 (0x13af9e20)
    | [96] = com.hwangjr.rxbus.entity.SubscriberEvent@330292832 (0x13afde60)
    | [97] = com.hwangjr.rxbus.entity.SubscriberEvent@330322720 (0x13b05320)
    | [98] = com.hwangjr.rxbus.entity.SubscriberEvent@330387968 (0x13b15200)
    | [99] = com.hwangjr.rxbus.entity.SubscriberEvent@330425472 (0x13b1e480)
    | [100] = com.hwangjr.rxbus.entity.SubscriberEvent@330463040 (0x13b27740)
    | [101] = com.hwangjr.rxbus.entity.SubscriberEvent@330490368 (0x13b2e200)
    | [102] = com.hwangjr.rxbus.entity.SubscriberEvent@330499232 (0x13b304a0)
    | [103] = com.hwangjr.rxbus.entity.SubscriberEvent@330516672 (0x13b348c0)
    | [104] = com.hwangjr.rxbus.entity.SubscriberEvent@330534048 (0x13b38ca0)
    | [105] = com.hwangjr.rxbus.entity.SubscriberEvent@330551360 (0x13b3d040)
    | [106] = com.hwangjr.rxbus.entity.SubscriberEvent@336019680 (0x140740e0)
    | [107] = com.hwangjr.rxbus.entity.SubscriberEvent@336037152 (0x14078520)
    | [108] = com.hwangjr.rxbus.entity.SubscriberEvent@336050336 (0x1407b8a0)
    | [109] = com.hwangjr.rxbus.entity.SubscriberEvent@336055296 (0x1407cc00)
    | [110] = com.hwangjr.rxbus.entity.SubscriberEvent@336060160 (0x1407df00)
    | [111] = com.hwangjr.rxbus.entity.SubscriberEvent@336073504 (0x14081320)
    | [112] = com.hwangjr.rxbus.entity.SubscriberEvent@336082400 (0x140835e0)
    | [113] = com.hwangjr.rxbus.entity.SubscriberEvent@336088704 (0x14084e80)
    | [114] = com.hwangjr.rxbus.entity.SubscriberEvent@336191264 (0x1409df20)
    | [115] = com.hwangjr.rxbus.entity.SubscriberEvent@336245248 (0x140ab200)
    | [116] = com.hwangjr.rxbus.entity.SubscriberEvent@336261632 (0x140af200)
    | [117] = com.hwangjr.rxbus.entity.SubscriberEvent@336274336 (0x140b23a0)
    | [118] = com.hwangjr.rxbus.entity.SubscriberEvent@336278592 (0x140b3440)
    | [119] = com.hwangjr.rxbus.entity.SubscriberEvent@336311360 (0x140bb440)
    | [120] = com.hwangjr.rxbus.entity.SubscriberEvent@336316128 (0x140bc6e0)
    | [121] = com.hwangjr.rxbus.entity.SubscriberEvent@330387872 (0x13b151a0)
    | [122] = com.hwangjr.rxbus.entity.SubscriberEvent@330464224 (0x13b27be0)
    | [123] = com.hwangjr.rxbus.entity.SubscriberEvent@330514880 (0x13b341c0)
    | [124] = com.hwangjr.rxbus.entity.SubscriberEvent@330545920 (0x13b3bb00)
    | [125] = com.hwangjr.rxbus.entity.SubscriberEvent@330573440 (0x13b42680)
    | [126] = com.hwangjr.rxbus.entity.SubscriberEvent@330605248 (0x13b4a2c0)
    | [127] = com.hwangjr.rxbus.entity.SubscriberEvent@330612288 (0x13b4be40)
    | [128] = com.hwangjr.rxbus.entity.SubscriberEvent@330675616 (0x13b5b5a0)
    | [129] = com.hwangjr.rxbus.entity.SubscriberEvent@330685280 (0x13b5db60)
    | [130] = com.hwangjr.rxbus.entity.SubscriberEvent@330703488 (0x13b62280)
    | [131] = com.hwangjr.rxbus.entity.SubscriberEvent@330709696 (0x13b63ac0)
    | [132] = com.hwangjr.rxbus.entity.SubscriberEvent@330730560 (0x13b68c40)
    | [133] = com.hwangjr.rxbus.entity.SubscriberEvent@330791520 (0x13b77a60)
    | [134] = com.hwangjr.rxbus.entity.SubscriberEvent@330825408 (0x13b7fec0)
    | [135] = com.hwangjr.rxbus.entity.SubscriberEvent@330946112 (0x13b9d640)
    | [136] = com.hwangjr.rxbus.entity.SubscriberEvent@330610432 (0x13b4b700)
    | [137] = com.hwangjr.rxbus.entity.SubscriberEvent@330624416 (0x13b4eda0)
    | [138] = com.hwangjr.rxbus.entity.SubscriberEvent@330690816 (0x13b5f100)
    | [139] = com.hwangjr.rxbus.entity.SubscriberEvent@330707936 (0x13b633e0)
    | [140] = com.hwangjr.rxbus.entity.SubscriberEvent@330740288 (0x13b6b240)
    | [141] = com.hwangjr.rxbus.entity.SubscriberEvent@330822848 (0x13b7f4c0)
    | [142] = com.hwangjr.rxbus.entity.SubscriberEvent@330946272 (0x13b9d6e0)
    | [143] = com.hwangjr.rxbus.entity.SubscriberEvent@330972288 (0x13ba3c80)
    | [144] = com.hwangjr.rxbus.entity.SubscriberEvent@330998208 (0x13baa1c0)
    | [145] = com.hwangjr.rxbus.entity.SubscriberEvent@331015040 (0x13bae380)
    | [146] = com.hwangjr.rxbus.entity.SubscriberEvent@331020160 (0x13baf780)
    | [147] = com.hwangjr.rxbus.entity.SubscriberEvent@331036864 (0x13bb38c0)
    | [148] = com.hwangjr.rxbus.entity.SubscriberEvent@331053728 (0x13bb7aa0)
    | [149] = com.hwangjr.rxbus.entity.SubscriberEvent@331091008 (0x13bc0c40)
    | [150] = com.hwangjr.rxbus.entity.SubscriberEvent@331199072 (0x13bdb260)
    | [151] = com.hwangjr.rxbus.entity.SubscriberEvent@330616704 (0x13b4cf80)
    | [152] = com.hwangjr.rxbus.entity.SubscriberEvent@330684384 (0x13b5d7e0)
    | [153] = com.hwangjr.rxbus.entity.SubscriberEvent@330710112 (0x13b63c60)
    | [154] = com.hwangjr.rxbus.entity.SubscriberEvent@330742784 (0x13b6bc00)
    | [155] = com.hwangjr.rxbus.entity.SubscriberEvent@330812384 (0x13b7cbe0)
    | [156] = com.hwangjr.rxbus.entity.SubscriberEvent@330947936 (0x13b9dd60)
    | [157] = com.hwangjr.rxbus.entity.SubscriberEvent@330979776 (0x13ba59c0)
    | [158] = com.hwangjr.rxbus.entity.SubscriberEvent@331015744 (0x13bae640)
    | [159] = com.hwangjr.rxbus.entity.SubscriberEvent@331036032 (0x13bb3580)
    | [160] = com.hwangjr.rxbus.entity.SubscriberEvent@331088800 (0x13bc03a0)
    | [161] = com.hwangjr.rxbus.entity.SubscriberEvent@331198688 (0x13bdb0e0)
    | [162] = com.hwangjr.rxbus.entity.SubscriberEvent@331206560 (0x13bdcfa0)
    | [163] = com.hwangjr.rxbus.entity.SubscriberEvent@331236160 (0x13be4340)
    | [164] = com.hwangjr.rxbus.entity.SubscriberEvent@331242720 (0x13be5ce0)
    | [165] = com.hwangjr.rxbus.entity.SubscriberEvent@331268640 (0x13bec220)

  • Instance of com.hwangjr.rxbus.entity.SubscriberEvent
    | hashCode = -1325260782
    | method = java.lang.reflect.Method@323496208 (0x13482910)
    | subject = rx.subjects.PublishSubject@322828880 (0x133dfa50)
    | target = hx520.auction.content.viewholder.item_FrameSample@319180000 (0x13064ce0)
    | thread = com.hwangjr.rxbus.thread.EventThread@324886000 (0x135d5df0)
    | valid = true
    | shadow$klass = com.hwangjr.rxbus.entity.SubscriberEvent
    | shadow$monitor = 0

  • Instance of hx520.auction.content.viewholder.item_FrameSample
    | static layout = 2130968747
    | static $staticOverhead = byte[16]@328134657 (0x138ef001)
    | static EVENT_SELECT = java.lang.String@320351936 (0x13182ec0)
    | color = -19712
    | colored = -5238262
    | display_sample = com.mikhaellopez.circularimageview.CircularImageView@349685760 (0x14d7c800)
    | line_read = android.support.v7.widget.AppCompatTextView@349694976 (0x14d7ec00)
    | material_name = android.support.v7.widget.AppCompatTextView@349692928 (0x14d7e400)
    | unbi = hx520.auction.content.viewholder.item_FrameSample_ViewBinding@322829376 (0x133dfc40)
    | innerType = 0
    | mObject = null
    | mSparseSparseArrayView = android.util.SparseArray@325568832 (0x1367c940)
    | mView = android.widget.LinearLayout@349680640 (0x14d7b400)
    | onLayoutListener = null
    | position = -1
    | swipeLayout = null
    | swipeMemory = null
    | itemView = android.widget.LinearLayout@349680640 (0x14d7b400)
    | mFlags = 1
    | mInChangeScrap = false
    | mIsRecyclableCount = 0
    | mItemId = -1
    | mItemViewType = 0
    | mNestedRecyclerView = null
    | mOldPosition = -1
    | mOwnerRecyclerView = android.support.v7.widget.RecyclerView@340243456 (0x1447b400)
    | mPayloads = null
    | mPendingAccessibilityState = -1
    | mPosition = 1
    | mPreLayoutPosition = -1
    | mScrapContainer = null
    | mShadowedHolder = null
    | mShadowingHolder = null
    | mUnmodifiedPayloads = null
    | mWasImportantForAccessibilityBeforeHidden = 0
    | shadow$klass = hx520.auction.content.viewholder.item_FrameSample
    | shadow$monitor = -2141655343

  • Instance of com.mikhaellopez.circularimageview.CircularImageView
    | static $staticOverhead = byte[24]@325267457 (0x13633001)
    | static SCALE_TYPE = android.widget.ImageView$ScaleType@1883334768 (0x70416870)
    | static DEFAULT_SHADOW_RADIUS = 8.0
    | static DEFAULT_BORDER_WIDTH = 4.0
    | borderWidth = 15.0
    | canvasSize = 240
    | drawable = android.graphics.drawable.VectorDrawable@315871568 (0x12d3d150)
    | image = android.graphics.Bitmap@318178688 (0x12f70580)
    | paint = android.graphics.Paint@324290688 (0x13544880)
    | paintBorder = android.graphics.Paint@324291936 (0x13544d60)
    | shadowColor = -16777216
    | shadowRadius = 0.0
    | mAdjustViewBounds = false
    | mAdjustViewBoundsCompat = false
    | mAlpha = 255
    | mBaseline = -1
    | mBaselineAlignBottom = false
    | mColorFilter = null
    | mColorMod = false
    | mCropToPadding = false
    | mDrawMatrix = android.graphics.Matrix@319410064 (0x1309cf90)
    | mDrawable = android.graphics.drawable.VectorDrawable@315871568 (0x12d3d150)
    | mDrawableHeight = 72
    | mDrawableTintList = null
    | mDrawableTintMode = null
    | mDrawableWidth = 72
    | mHasColorFilter = false
    | mHasDrawableTint = false
    | mHasDrawableTintMode = false
    | mHaveFrame = true
    | mLevel = 0
    | mMatrix = android.graphics.Matrix@319410064 (0x1309cf90)
    | mMaxHeight = 2147483647
    | mMaxWidth = 2147483647
    | mMergeState = false
    | mRecycleableBitmapDrawable = null
    | mResource = 2130837998
    | mScaleType = android.widget.ImageView$ScaleType@1883334696 (0x70416828)
    | mState = null
    | mTempDst = android.graphics.RectF@325561088 (0x1367ab00)
    | mTempSrc = android.graphics.RectF@325561056 (0x1367aae0)
    | mUri = null
    | mViewAlphaScale = 256
    | mXfermode = null
    | mAccessibilityCursorPosition = -1
    | mAccessibilityDelegate = null
    | mAccessibilityTraversalAfterId = -1
    | mAccessibilityTraversalBeforeId = -1
    | mAccessibilityViewId = -1
    | mAnimator = null
    | mAttachInfo = null
    | mAttributes = null
    | mBackground = null
    | mBackgroundRenderNode = null
    | mBackgroundResource = 0
    | mBackgroundSizeChanged = true
    | mBackgroundTint = null
    | mBottom = 242
    | mCachingFailed = false
    | mCanTouchInOtherThread = false
    | mClipBounds = null
    | mContentDescription = null
    | mContext = hx520.auction.main.OrderProcess@341687808 (0x145dbe00)
    | mCurrentAnimation = null
    | mDrawableState = int[3]@1883298152 (0x7040d968)
    | mDrawingCache = null
    | mDrawingCacheBackgroundColor = 0
    | mFloatingTreeObserver = null
    | mForceRTL = false
    | mForegroundInfo = null
    | mGhostView = null
    | mHasPerformedLongPress = false
    | mHwInstrumentation = null
    | mHwStateListAnimator = null
    | mID = 2131952358
    | mIgnoreNextUpEvent = false
    | mInContextButtonPress = false
    | mInputEventConsistencyVerifier = null
    | mKeyedTags = null
    | mLabelForId = -1
    | mLastIsOpaque = false
    | mLayerPaint = null
    | mLayerType = 0
    | mLayoutInsets = null
    | mLayoutParams = android.widget.LinearLayout$LayoutParams@319926144 (0x1311af80)
    | mLeft = 45
    | mLeftPaddingDefined = false
    | mListenerInfo = android.view.View$ListenerInfo@319040336 (0x13042b50)
    | mMatchIdPredicate = null
    | mMatchLabelForPredicate = null
    | mMeasureCache = android.util.LongSparseLongArray@325659712 (0x13692c40)
    | mMeasuredHeight = 242
    | mMeasuredWidth = 240
    | mMinHeight = 0
    | mMinWidth = 0
    | mNestedScrollingParent = null
    | mNextFocusDownId = -1
    | mNextFocusForwardId = -1
    | mNextFocusLeftId = -1
    | mNextFocusRightId = -1
    | mNextFocusUpId = -1
    | mOldHeightMeasureSpec = 1073742064
    | mOldWidthMeasureSpec = 1073742064
    | mOutlineProvider = android.view.ViewOutlineProvider$1@1883335008 (0x70416960)
    | mOverScrollMode = 1
    | mOverlay = null
    | mPaddingBottom = 0
    | mPaddingLeft = 0
    | mPaddingRight = 0
    | mPaddingTop = 0
    | mParent = android.widget.LinearLayout@349680640 (0x14d7b400)
    | mPendingCheckForLongPress = null
    | mPendingCheckForTap = null
    | mPerformClick = null
    | mPrivateFlags = -2128607216
    | mPrivateFlags2 = 1610819112
    | mPrivateFlags3 = 0
    | mRecreateDisplayList = false
    | mRenderNode = android.view.RenderNode@325560960 (0x1367aa80)
    | mResources = android.content.res.HwResources@315824000 (0x12d31780)
    | mRight = 285
    | mRightPaddingDefined = false
    | mScrollCache = null
    | mScrollIndicatorDrawable = null
    | mScrollX = 0
    | mScrollY = 0
    | mSendViewScrolledAccessibilityEvent = null
    | mSendViewStateChangedAccessibilityEvent = null
    | mSendingHoverAccessibilityEvents = false
    | mStartActivityRequestWho = null
    | mStateListAnimator = null
    | mSystemUiVisibility = 0
    | mTag = null
    | mTempNestedScrollConsumed = null
    | mTop = 0
    | mTouchDelegate = null
    | mTouchSlop = 24
    | mTransformationInfo = android.view.View$TransformationInfo@325661248 (0x13693240)
    | mTransientStateCount = 0
    | mTransitionName = null
    | mUnscaledDrawingCache = null
    | mUnsetPressedState = null
    | mUserPaddingBottom = 0
    | mUserPaddingEnd = -2147483648
    | mUserPaddingLeft = 0
    | mUserPaddingLeftInitial = 0
    | mUserPaddingRight = 0
    | mUserPaddingRightInitial = 0
    | mUserPaddingStart = -2147483648
    | mVerticalScrollFactor = 0.0
    | mVerticalScrollbarPosition = 0
    | mViewFlags = 402669568
    | mWindowAttachCount = 2
    | shadow$klass = com.mikhaellopez.circularimageview.CircularImageView
    | shadow$monitor = 0

  • Instance of hx520.auction.main.OrderProcess
    | static TAG_SAVE = java.lang.String@320960880 (0x13217970)
    | static EVENT_ORDER_PROCESS = java.lang.String@321210688 (0x13254940)
    | static IS_LAST_STEP = java.lang.String@321210752 (0x13254980)
    | static $staticOverhead = byte[48]@318722049 (0x12ff5001)
    | static PROCESS_STEP_DIR = java.lang.String@321210880 (0x13254a00)
    | static request_code = 8483
    | static PROCESS_STEP = java.lang.String@321210816 (0x132549c0)
    | bNext = null
    | bPrevious = null
    | current_step = 1
    | doCompleteFinish = hx520.auction.main.OrderProcess$2@319326944 (0x13088ae0)
    | doGiveUp = hx520.auction.main.OrderProcess$1@319326784 (0x13088a40)
    | doNext = hx520.auction.main.OrderProcess$3@319326960 (0x13088af0)
    | doPrevious = hx520.auction.main.OrderProcess$4@319327056 (0x13088b50)
    | uBinder1 = hx520.auction.main.OrderProcess_ViewBinding@319488576 (0x130b0240)
    | back_lock = false
    | mSingleStackNavigationManagerFragmentTag = java.lang.String@324289536 (0x13544400)
    | mSystemBarTint = null
    | mTranslucentNavigation = false
    | mTranslucentNavigationSet = false
    | mTranslucentStatus = false
    | mTranslucentStatusSet = false
    | navManager = com.dmcapps.navigationfragment.manager.SingleStackNavigationManagerFragment@322190848 (0x13343e00)
    | mDelegate = android.support.v7.app.AppCompatDelegateImplV23@318628112 (0x12fde110)
    | mEatKeyUpEvent = false
    | mResources = null
    | mThemeId = 2131689538
    | mCreated = true
    | mFragments = android.support.v4.app.FragmentController@319326736 (0x13088a10)
    | mHandler = android.support.v4.app.FragmentActivity$1@323386176 (0x13467b40)
    | mNextCandidateRequestIndex = 0
    | mOptionsMenuInvalidated = false
    | mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@323412704 (0x1346e2e0)
    | mReallyStopped = true
    | mRequestedPermissionsFromFragment = false
    | mResumed = false
    | mRetaining = false
    | mStopped = true
    | mStartedActivityFromFragment = false
    | mStartedIntentSenderFromFragment = false
    | mExtraDataMap = android.support.v4.util.SimpleArrayMap@323386080 (0x13467ae0)
    | mActionBar = null
    | mActionModeTypeStarting = 0
    | mActivityInfo = android.content.pm.ActivityInfo@315486848 (0x12cdf280)
    | mActivityTransitionState = android.app.ActivityTransitionState@322280576 (0x13359c80)
    | mApplication = hx520.auction.core.AppInstance@315810496 (0x12d2e2c0)
    | mCalled = true
    | mChangeCanvasToTranslucent = false
    | mChangingConfigurations = false
    | mComponent = android.content.ComponentName@319160576 (0x13060100)
    | mConfigChangeFlags = 0
    | mCurrentConfig = android.content.res.Configuration@316355968 (0x12db3580)
    | mDecor = null
    | mDefaultKeyMode = 0
    | mDefaultKeySsb = null
    | mDestroyed = true
    | mDoReportFullyDrawn = false
    | mEmbeddedID = null
    | mEnableDefaultActionBarUp = false
    | mEnterTransitionListener = android.app.SharedElementCallback$1@1883267464 (0x70406188)
    | mExitTransitionListener = android.app.SharedElementCallback$1@1883267464 (0x70406188)
    | mFinished = true
    | mFragments = android.app.FragmentController@319326656 (0x130889c0)
    | mHandler = android.os.Handler@323385952 (0x13467a60)
    | mHasCurrentPermissionsRequest = false
    | mIdent = 93159085
    | mInstanceTracker = android.os.StrictMode$InstanceTracker@319326688 (0x130889e0)
    | mInstrumentation = android.app.Instrumentation@314845472 (0x12c42920)
    | mIntent = android.content.Intent@322003712 (0x13316300)
    | mIsFullFlag = false
    | mLastNonConfigurationInstances = null
    | mMainThread = android.app.ActivityThread@314759104 (0x12c2d7c0)
    | mManagedCursors = java.util.ArrayList@323386016 (0x13467aa0)
    | mManagedDialogs = null
    | mMenuInflater = null
    | mParent = null
    | mReferrer = java.lang.String@321522416 (0x132a0af0)
    | mResultCode = 0
    | mResultData = null
    | mResumed = false
    | mSearchEvent = null
    | mSearchManager = null
    | mStartedActivity = false
    | mStopped = true
    | mTemporaryPause = false
    | mTitle = java.lang.String@316797888 (0x12e1f3c0)
    | mTitleColor = 0
    | mTitleReady = true
    | mToken = android.os.BinderProxy@323289216 (0x13450080)
    | mTranslucentCallback = null
    | mUiThread = java.lang.Thread@1968727984 (0x755867b0)
    | mVisibleBehind = false
    | mVisibleFromClient = true
    | mVisibleFromServer = true
    | mVoiceInteractor = null
    | mWindow = com.android.internal.policy.HwPhoneWindow@315038080 (0x12c71980)
    | mWindowAdded = true
    | mWindowManager = android.view.WindowManagerImpl@323396000 (0x1346a1a0)
    | mInflater = com.android.internal.policy.HwPhoneLayoutInflater@322172816 (0x1333f790)
    | mOverrideConfiguration = null
    | mResources = android.content.res.HwResources@315824000 (0x12d31780)
    | mTheme = android.content.res.Resources$Theme@323396480 (0x1346a380)
    | mThemeResource = 2131689538
    | mBase = android.app.ContextImpl@315497472 (0x12ce1c00)
    | shadow$klass = hx520.auction.main.OrderProcess
    | shadow$monitor = 1073746720

  • Excluded Refs:
    | Field: android.view.inputmethod.InputMethodManager.mNextServedView
    | Field: android.view.inputmethod.InputMethodManager.mServedView
    | Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
    | Field: android.view.inputmethod.InputMethodManager.mCurRootView
    | Field: android.os.UserManager.mContext
    | Field: android.net.ConnectivityManager.sInstance
    | Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
    | Thread:FinalizerWatchdogDaemon (always)
    | Thread:main (always)
    | Thread:LeakCanary-Heap-Dump (always)
    | Class:java.lang.ref.WeakReference (always)
    | Class:java.lang.ref.SoftReference (always)
    | Class:java.lang.ref.PhantomReference (always)
    | Class:java.lang.ref.Finalizer (always)
    | Class:java.lang.ref.FinalizerReference (always)

调用register时闪退。release版本。混淆已配置

java.lang.NoSuchFieldError
                                                                     at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:688)
                                                                     at libcore.reflect.AnnotationAccess.getDefaultValue(AnnotationAccess.java:361)
                                                                     at java.lang.reflect.Method.getDefaultValue(Method.java:327)
                                                                     at libcore.reflect.AnnotationFactory.getElementsDescription(AnnotationFactory.java:75)
                                                                     at libcore.reflect.AnnotationFactory.<init>(AnnotationFactory.java:112)
                                                                     at libcore.reflect.AnnotationFactory.createAnnotation(AnnotationFactory.java:94)
                                                                     at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:666)
                                                                     at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641)
                                                                     at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170)
                                                                     at java.lang.reflect.Method.getAnnotation(Method.java:301)
                                                                     at com.hwangjr.rxbus.b.a.a(SourceFile:81)
                                                                     at com.hwangjr.rxbus.b.a.a(SourceFile:40)
                                                                     at com.hwangjr.rxbus.b.a.a(SourceFile:157)
                                                                     at com.hwangjr.rxbus.b.b$1.a(SourceFile:23)
                                                                     at com.hwangjr.rxbus.a.a(SourceFile:179)
                                                                     at com.yueke.astraea.MainActivity.onCreate(SourceFile:94)
                                                                     at android.app.Activity.performCreate(Activity.java:6107)
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2373)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:164)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1377)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                     at android.os.Looper.loop(Looper.java:150)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5408)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
                                                                  Caused by: java.lang.NoSuchFieldException: MAIN_THREAD
                                                                     at java.lang.Class.getDeclaredField(Class.java:890)
                                                                     at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:685)
                                                                     at libcore.reflect.AnnotationAccess.getDefaultValue(AnnotationAccess.java:361) 
                                                                     at java.lang.reflect.Method.getDefaultValue(Method.java:327) 
                                                                     at libcore.reflect.AnnotationFactory.getElementsDescription(AnnotationFactory.java:75) 
                                                                     at libcore.reflect.AnnotationFactory.<init>(AnnotationFactory.java:112) 
                                                                     at libcore.reflect.AnnotationFactory.createAnnotation(AnnotationFactory.java:94) 
                                                                     at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:666) 
                                                                     at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641) 
                                                                     at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170) 
                                                                     at java.lang.reflect.Method.getAnnotation(Method.java:301) 
                                                                     at com.hwangjr.rxbus.b.a.a(SourceFile:81) 
                                                                     at com.hwangjr.rxbus.b.a.a(SourceFile:40) 
                                                                     at com.hwangjr.rxbus.b.a.a(SourceFile:157) 
                                                                     at com.hwangjr.rxbus.b.b$1.a(SourceFile:23) 
                                                                     at com.hwangjr.rxbus.a.a(SourceFile:179) 
                                                                     at com.yueke.astraea.MainActivity.onCreate(SourceFile:94) 
                                                                     at android.app.Activity.performCreate(Activity.java:6107) 
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2373) 
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:164) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1377) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                     at android.os.Looper.loop(Looper.java:150) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5408) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759) 

Support for RxJava 2.0

Hi,

Are you going to support RxJava 2.0 and if yes then when can we expect the same as I don't think the current implementation would be compatible with 2.0.

Plus thanks a lot for this awesome library.

[EventProducer] has been invalidated and can no longer produce events.

When an activity exist for too long then this happens producers get invalidated. I posted it as a question on stackover but i have received any answers yet. Any idea what is goin on here?

Fatal Exception: java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
       at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:112)
       at android.os.Handler.handleCallback(Handler.java:815)
       at android.os.Handler.dispatchMessage(Handler.java:104)
       at android.os.Looper.loop(Looper.java:194)
       at android.app.ActivityThread.main(ActivityThread.java:5637)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by rx.exceptions.OnErrorNotImplementedException: [EventProducer public xyz.chanl.radio.events.Events$StageStation xyz.chanl.radio.fragments.StationsListFragment.stageStation()] has been invalidated and can no longer produce events.
       at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:386)
       at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:383)
       at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44)
       at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:157)
       at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120)
       at rx.internal.operators.OperatorSubscribeOn$1$1.onError(OperatorSubscribeOn.java:59)
       at rx.Observable.unsafeSubscribe(Observable.java:8673)
       at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
       at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107)
       at android.os.Handler.handleCallback(Handler.java:815)
       at android.os.Handler.dispatchMessage(Handler.java:104)
       at android.os.Looper.loop(Looper.java:194)
       at android.app.ActivityThread.main(ActivityThread.java:5637)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by java.lang.IllegalStateException: [EventProducer public xyz.chanl.radio.events.Events$StageStation xyz.chanl.radio.fragments.StationsListFragment.stageStation()] has been invalidated and can no longer produce events.
       at com.hwangjr.rxbus.entity.ProducerEvent.produceEvent(ProducerEvent.java:98)
       at com.hwangjr.rxbus.entity.ProducerEvent.access$000(ProducerEvent.java:17)
       at com.hwangjr.rxbus.entity.ProducerEvent$1.call(ProducerEvent.java:80)
       at com.hwangjr.rxbus.entity.ProducerEvent$1.call(ProducerEvent.java:76)
       at rx.Observable.unsafeSubscribe(Observable.java:8666)
       at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
       at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107)
       at android.os.Handler.handleCallback(Handler.java:815)
       at android.os.Handler.dispatchMessage(Handler.java:104)
       at android.os.Looper.loop(Looper.java:194)
       at android.app.ActivityThread.main(ActivityThread.java:5637)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

关于在Fragment使用上的疑问?

您好,我的界面是一个MainActivity里有多个Fragment(1,2,3,4),我现在想在fragment1发出事件,在fragment2里消费事件。那我使用的话,我的rxbus是只需要声明在register/unregister在MainActivity上,然后暴露方法给各个fragment调用呢?还是在每个Fragment都声明一个rxbus,然后register/unregister?

望解答,谢谢!

Replace EventBus

Hi, I want to replace EventuBus with RxBus in my application...but when I start to work with it I found initial problem for me. In EventBus I've a method isRegistered to check if an object is registered. Where is it into RxBus?

要怎么配置混淆文件

如果没有混淆则app正常,但一旦混淆了,及出现这个错误,我已经配置了不混淆

rxbus

-dontwarn com.hwangjr.rxbus.**
-keep class com.hwangjr.rxbus.** { *;}

java.lang.InternalError
at d.d.d.b.y.a(UnsafeAccess.java:103)
at d.d.d.b.x.(SpscArrayQueue.java:39)
at d.d.a.r.(OperatorObserveOn.java:94)
at d.d.a.q.a(OperatorObserveOn.java:64)
at d.d.a.q.call(OperatorObserveOn.java:44)
at d.b.a(Observable.java:158)
at d.b.call(Observable.java:154)
at d.a.a(Observable.java:8191)
at d.a.b(Observable.java:8158)
at d.a.a(Observable.java:7914)
at com.hwangjr.rxbus.entity.SubscriberEvent.initObservable(SubscriberEvent.java:73)
at com.hwangjr.rxbus.entity.SubscriberEvent.(SubscriberEvent.java:63)
at com.hwangjr.rxbus.finder.AnnotatedFinder.findAllSubscribers(AnnotatedFinder.java:185)
at com.hwangjr.rxbus.finder.Finder$1.findAllSubscribers(Finder.java:28)
at com.hwangjr.rxbus.Bus.register(Bus.java:198)

订阅不到消息

在使用注解的时候没有考虑父类的情况 比如我发一个消息 在baseActivity里面使用
RxBus.get().register(this)如果我把接受消息的注解写在 BaseActivity 是接受不到的

线程问题

RxBus2.x的demo,为什么所有的都在mainThread上,把订阅和生产的代码放在子线程上,最终还是在mainththread上执行?
结果:
E/Tom: Caught Black Mouse: Black Mouse: com.hwangjr.rxbus.app.BlackMouse@5f6ef9e On Thread[main,5,main] E/MainActivity: Haha, i am Black Mouse: com.hwangjr.rxbus.app.BlackMouse@6b99a95 E/Tom: Caught Black Mouse: Black Mouse: com.hwangjr.rxbus.app.BlackMouse@6b99a95 On Thread[main,5,main]

代码:

                Observable.just(0)
                        .observeOn(Schedulers.io())
                        .subscribeOn(Schedulers.io())
                        .subscribe(new Consumer<Integer>() {
                            @Override
                            public void accept(Integer integer) throws Exception {
                                Mouse mouse = mouseMam.birth();
                                mouse.squeak();

                                Timber.e("\tHaha, i am " + mouse);
                            }
                        });
        Observable.just(0)
                .observeOn(Schedulers.io())
                .subscribeOn(Schedulers.io())
                .subscribe(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer integer) throws Exception {
                        CatMam catMam = new CatMam();

                        RxBus.get().register(catMam.birth());
                        while (true) {
                            Thread.sleep(500);
                        }

                    }
                });

why this rxbus "post" default in mainThread?

Bus.java

public Bus(String identifier) {
        this(ThreadEnforcer.MAIN, identifier);
    }

ThreadEnforecer.java

ThreadEnforcer MAIN = new ThreadEnforcer() {
        @Override
        public void enforce(Bus bus) {
            if (Looper.myLooper() != Looper.getMainLooper()) {
                throw new IllegalStateException("Event bus " + bus + " accessed from non-main thread " + Looper.myLooper());
            }
        }
    };

跟androidannotations框架冲突

androidannotations框架会自动继承一个类出来,而在遍历查找函数时用的getDeclaredMethods是不会去查找父类的,所以导致查找不到Subscribe,暂时不知道如何去解决这个问题。,知道的回我一下,thx

未register的时候,调用unregister会抛异常

为啥得抛异常?我有时候为了性能考虑,在activity创建时判断一些必要条件,如果不满足就直接finish,这种情况下是不会register Rxbus的,但是我在onDestory时统一unregister,然后Rxbus就抛异常了。

难道这种情况我还得记个flag?总感觉在这种情况下直接抛异常的设计很不好。我也不可能try catch,这样是有性能开销的

Missing BackPressure Exception

We accidentally triggered a BackPressure which caused RxBus to choke.

Fatal Exception: java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. AddonErrorhandling. at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:60) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by rx.exceptions.OnErrorNotImplementedException at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:374) at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:371) at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44) at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:157) at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:264) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:207) at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:222) at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by rx.exceptions.MissingBackpressureException at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.onNext(OperatorObserveOn.java:150) at rx.subjects.SubjectSubscriptionManager$SubjectObserver.onNext(SubjectSubscriptionManager.java:223) at rx.subjects.PublishSubject.onNext(PublishSubject.java:114) at com.hwangjr.rxbus.entity.SubscriberEvent.handle(SubscriberEvent.java:102) at com.hwangjr.rxbus.Bus.dispatch(Bus.java:349) at com.hwangjr.rxbus.Bus.post(Bus.java:330)

关于demo

感觉你写的demo太抽象化了,是否多添加几个简单的页面跳转;
虽然用到了rxjava的事件分发,但整体感觉还是跟eventbus、otto类似

more examples needed

question. when im doing a io thread with a tag called "network_io" .
i put into this to execute the thread

object_cc  = pp_item;
RxBus.get().post("network_io", pp_item);

//when the io thread is complete
@Subscribe(thread = EventThread.IO, tags = {@Tag("network_io")})

what is the best way to notify the mainthread when the job is complete?
do i just do another post call to the mainthread like this?

  @Subscribe(thread = EventThread.MAIN_THREAD, tags = {@Tag("network_io")})

Provide some more examples

Hi can you provide some more examples please?

Like if I want to switch to 1 fragment to another from a button click in Fragment1 I want to go to Fragment2, so I've used activity for replacement logic.

In Activity I've
@subscribe(tags = {@tag(RxConstants.EventType.SCREEN_SWITCH_EVENT)})

In Activity I'm adding Fragment1 by
@produce(tags = {@tag(RxConstants.EventType.SCREEN_SWITCH_EVENT)})
private Screen getRegisterScreen() {
return Screen.REGISTER;
}

Now in Fragment1 on the click of a Button I want to replace Fragment1 with Fragment2.

So in Fragment2 I'm doing something like this:

@produce(tags = {@tag(RxConstants.EventType.SCREEN_SWITCH_EVENT)})
private VehicleActivity.Screen getListingScreen() {
return VehicleActivity.Screen.VEHICLE_LISTING;
}

But when it will be executed? As I want it to execute on the click of a button.

So can you please guide me with the same?

我被你的demo搞懵了,看了使用文档,有些疑问,特来询问。

@hwangjr
很抱歉的打扰你了,因为我实在是看不懂你的demo
首先是文档里描述的代码
` @subscribe
public void eat(String food) {
// purpose
}

@Subscribe(
    thread = EventThread.IO,
    tags = {
        @Tag(BusAction.EAT_MORE)
    }
)
public void eatMore(List<String> foods) {
    // purpose
}

@Produce
public String produceFood() {
    return "This is bread!";
}

@Produce(
    thread = EventThread.IO,
    tags = {
        @Tag(BusAction.EAT_MORE)
    }
)
public List<String> produceMoreFood() {
    return Arrays.asList("This is breads!");
}`

我们在使用Otto或者EvenBus的时候,是post一个,然后在要用的类中就注册和反注册,然后用一个注解标记一个函数,这个函数就会自动调用。我看你这个库很类似,所以本来打算用的,但是看到你的这段代码,我就糊涂了,请问是不是每次我要在用的类中注册和反注册了之后,在希望被调用的函数上面都要写
` @subscribe
public void eat(String food) {
// purpose
}

@Subscribe(
    thread = EventThread.IO,
    tags = {
        @Tag(BusAction.EAT_MORE)
    }
)
public void eatMore(List<String> foods) {
    // purpose
}`

我的意思是先想表达:是不是必须得有两个@subscribe + @subscribe(
thread = EventThread.IO,
tags = {
@tag(BusAction.EAT_MORE)
}
)

您是想表达什么意思?
是两者都行?还是两者都必须得写了才可以?
还有你的demo,犹豫没看懂,能不能稍微提示一下用法。
我就想发送一个消息,在另一个类中能接收到,从这种最简单的用法开始就好。你的demo里由于看不出来你哪里生产哪里消费了。所以才来这里提问的。
期待你的解答^_^

JUnit Test

Now the test has break, so need to enhance the tests.

minsdkVersion

通过依赖下载下来,提示我sdkversion不能小于15,
com.hwangjr.rxbus\rxbus\1.0.4\AndroidManifest.xml中,

demo中最低不是9么

Add Samples

Add usage to sample, include subscribe and producer etc..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.