1

Alarmanagerブロードキャストの繰り返しに応答しているブロードキャストレシーバーがあります。ブロードキャストレシーバーのオブジェクトは別のクラスで作成されますが、オブジェクトを作成するクラス内のメソッドを呼び出すには、ブロードキャストレシーバーのOnreceiveメソッドが必要です。

したがって、これをより明確にするために。クラスBは放送受信機です。クラスA内で、クラスBのオブジェクトをインスタンス化します。ただし、OnRecieveメソッドは、クラスAのパブリックメソッドをクラス化する必要があります。

ところで、クラスAはMainactivityクラスです。

クラスBのセットアップで、Runnableオブジェクトをパラメーターとして渡すことを考えていましたが、それを実装する方法が完全にはわかりません。

public class TimerBroadcastReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        CalcDisplay(true);      
    }

    public void setTimer(Context context)
    {
        AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, MainActivity.class);
        PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
        am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60, pi);
    }

    public void cancelTimer(Context context)
    {
        Intent intent = new Intent(context, MainActivity.class);
        PendingIntent Sender = PendingIntent.getBroadcast(context, 0, intent, 0);
        AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        am.cancel(Sender);
    }

}
4

1 に答える 1

0

レシーバー(クラスB)をアクティビティ(クラスA)内にネストします。そのようです:

public class A extends Activity {

    B receiver = new B();

    ...*Some stuff*

    public class B extends BroadCastReceiver {

        @Override
        public void onReceive() {
            *call method from class A*
        }

    }
}

これで、クラスBはクラスAのメソッドにアクセスできるようになります。

于 2013-02-14T03:21:39.597 に答える