EventBusアクティビティを開始できません

bircastri

Androidアプリを作成していて、ServiceクラスからActivityにEventBusを送信したいと思います。

これが私のアクティビティコードです:

    @Override
    protected void onResume() {
        super.onResume();
        startServiceScan(true);
    }

    @Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(BlePowerService.class);
    }

    @Override
    protected void onPause() {
        EventBus.getDefault().unregister(BlePowerService.class);
        super.onPause();
    }

    @Override
    public void onDestroy() {

        super.onDestroy();
        EventBus.getDefault().unregister(BlePowerService.class);
    }

// This method will be called when a HelloWorldEvent is posted
    public void onEvent(MessageEvent event){
        // your implementation
        System.out.print("");
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void getEventBusData(MessageEvent messageEvent) {
        if (messageEvent != null) {
           //TO-DO
        }

    }

これは私のBlePowerServiceクラスのコードです:

EventBus.getDefault().post(new MessageEvent("update"));

アプリケーションを起動しようとすると、次のエラーが発生します。

    java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.care.devicesensor/com.care.devicesensor.BLEActivity}: 
org.greenrobot.eventbus.EventBusException: Subscriber class java.lang.Class and its super classes have 
no public methods with the @Subscribe annotation
...............
Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class java.lang.Class 
and its super classes have no public methods with the @Subscribe annotation

私のActivityクラスのエラーIDonStartメソッド。

//編集

MessageEventクラスを追加します。

public class MessageEvent {
    public final String message;

    public MessageEvent(String message) {
        this.message = message;
    }
}
アンソニーキャノン

だからあなたはここでいくつか間違ったことをしました...

まず、見てアンドロイドのアクティビティのライフサイクルでは、あなたが何かを登録した場合onStart()、あなたはそれ登録を解除では、次にすべきonStop()、とあなたが何かを登録した場合にonResume()、あなたはその後で、それの登録を解除すべきですonPause()それ以外の場合は、アクティビティの開始時に登録しますが、ユーザーがアプリを少しバックグラウンドに置くと、登録が解除され、アプリが開始されていないため再登録されず、再開されたばかりです。

次に、EventBus GitHubを見ると、クラスではなくアクティビティを登録しいるはずです。

次に例を示します。

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Override
public void onStop() {
    super.onStop();
    EventBus.getDefault().unregister(this);
}

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(MessageEvent event) {
    /* Do something */
}

これonMessageEventで、次のコードを使用して、アプリのどこからでも関数を呼び出すことができます。

EventBus.getDefault().post(new MessageEvent("update"));

補足として、これはProGuardの結果である可能性があります。幸い、サブスクライバーがコードから削除されないようにするために使用できるEventBusProGuardルールがあります。

-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Androidアクティビティを開始できません

分類Dev

アクティビティを開始できませんAndroidStudio

分類Dev

アクティビティを開始できません-YouTubeStandalonePlayer

分類Dev

アクティビティAndroidを開始できません

分類Dev

Androidでアクティビティを開始できません

分類Dev

SQL例外でアクティビティComponentInfoを開始できません

分類Dev

実行時例外がアクティビティを開始できません

分類Dev

アクティビティjava.lang.RuntimeExceptionを開始できません

分類Dev

listview.getSelectedItemPosition()からアクティビティを開始できません

分類Dev

アクティビティを開始できませんComponentInfo:java.lang.NullPointerException

分類Dev

NullPointerExceptionAndroid-アクティビティを開始できません

分類Dev

アクティビティを開始できませんComponentInfo:java.lang.NullPointerException

分類Dev

java.lang.RuntimeException:アクティビティを開始できません

分類Dev

Android:java.lang.NullPointerExceptionアクティビティを開始できません

分類Dev

Android:アクティビティを開始できません:NullPointerException?

分類Dev

アクティビティを開始できませんComponentInfo解析

分類Dev

RuntimeException:アクティビティComponentInfo、NotFoundExceptionを開始できません

分類Dev

Java.Lang.RuntimeExceptionアクティビティを開始できません

分類Dev

アクティビティを開始できませんComponentInfo-java.lang.IllegalStateException

分類Dev

java.lang.RuntimeException: アクティビティを開始できません

分類Dev

androidstudioがアクティビティComponentInfoを開始できません

分類Dev

新しいアクティビティを開始するときにアクティビティComponentInfoを開始できません

分類Dev

startActivity()はアクティビティを開始しません

分類Dev

部屋:IDをインテントに追加するアクティビティを開始できません

分類Dev

Android:ボタンをクリックしてもアクティビティを開始できません

分類Dev

RuntimeException:Androidのメインアクティビティでレトロフィットのアクティビティを開始できません

分類Dev

Httppostを呼び出すときにアクティビティComponentInfoを開始できません

分類Dev

Oreo(8.1)はロック画面でアクティビティを開始できません

分類Dev

アクティビティComponentInfoを開始できません-SQLiteを挿入します

Related 関連記事

  1. 1

    Androidアクティビティを開始できません

  2. 2

    アクティビティを開始できませんAndroidStudio

  3. 3

    アクティビティを開始できません-YouTubeStandalonePlayer

  4. 4

    アクティビティAndroidを開始できません

  5. 5

    Androidでアクティビティを開始できません

  6. 6

    SQL例外でアクティビティComponentInfoを開始できません

  7. 7

    実行時例外がアクティビティを開始できません

  8. 8

    アクティビティjava.lang.RuntimeExceptionを開始できません

  9. 9

    listview.getSelectedItemPosition()からアクティビティを開始できません

  10. 10

    アクティビティを開始できませんComponentInfo:java.lang.NullPointerException

  11. 11

    NullPointerExceptionAndroid-アクティビティを開始できません

  12. 12

    アクティビティを開始できませんComponentInfo:java.lang.NullPointerException

  13. 13

    java.lang.RuntimeException:アクティビティを開始できません

  14. 14

    Android:java.lang.NullPointerExceptionアクティビティを開始できません

  15. 15

    Android:アクティビティを開始できません:NullPointerException?

  16. 16

    アクティビティを開始できませんComponentInfo解析

  17. 17

    RuntimeException:アクティビティComponentInfo、NotFoundExceptionを開始できません

  18. 18

    Java.Lang.RuntimeExceptionアクティビティを開始できません

  19. 19

    アクティビティを開始できませんComponentInfo-java.lang.IllegalStateException

  20. 20

    java.lang.RuntimeException: アクティビティを開始できません

  21. 21

    androidstudioがアクティビティComponentInfoを開始できません

  22. 22

    新しいアクティビティを開始するときにアクティビティComponentInfoを開始できません

  23. 23

    startActivity()はアクティビティを開始しません

  24. 24

    部屋:IDをインテントに追加するアクティビティを開始できません

  25. 25

    Android:ボタンをクリックしてもアクティビティを開始できません

  26. 26

    RuntimeException:Androidのメインアクティビティでレトロフィットのアクティビティを開始できません

  27. 27

    Httppostを呼び出すときにアクティビティComponentInfoを開始できません

  28. 28

    Oreo(8.1)はロック画面でアクティビティを開始できません

  29. 29

    アクティビティComponentInfoを開始できません-SQLiteを挿入します

ホットタグ

アーカイブ