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 类)嵌套在您的 Activity(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 回答