2

免責事項:私はAndroidプログラミングにかなり慣れていないので、iOSNSNotificationCenterを模倣しようとしています。

LocalBroadcastManagerがNSNotifcationCenterのように機能することがわかりました。私がやろうとしているのは、ソケットトラフィックが終了したときに、静的クラスからアクティビティにメッセージを送信することです。

このstackoverflowの回答からLocalBroadcastManagerの使用方法を見つけました

私の質問は、context('this')を静的クラスに設定する方法です。そうしないと「LocalBroadcastManager型のメソッドgetInstance(Context)は引数(MY_STATIC_CLASS)に適用できません」というエラーが表示されません。

LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

LocalBroadcastManagerを使用することが静的クラスからアクティビティに情報を送信する最良の方法ではない場合、私はこれを行う他の方法を受け入れます。

4

1 に答える 1

5

静的メソッドを呼び出すアプリケーションのアクティビティからコンテキストを渡すだけです。

public static void sendBroadcast(Context context){LocalBroadcastManager.getInstance(context).sendBroadcast(intent); }

アプリケーションまたはアクティビティから

StaticClass.sendBroadcast(getApplicationContext());

または、静的クラスからifを呼び出す必要がある場合は、アプリケーション作成のコンテキストをパスします。

public final class YourApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        YourClass.init(this);
    }

}


public final class YourClass {

    private static Context context;

    public static void init(Context context) {
        YourClass.context = context;
    }

    public static void sendBroadcast() {
        LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
    }

}
于 2013-02-28T17:02:37.077 に答える