从BroadcastReceiver调用方法

时间:2013-02-14 03:01:37

标签: android

我有一个响应重复Alarmanager广播的广播接收器。广播接收器的对象是在另一个类中创建的,但是我需要广播接收器的Onreceive方法来调用创建对象的类中的方法。

所以试着让这个更清楚。 B类是广播接收器。在A类中,我实例化了B类的对象。但是OnRecieve方法需要对A类的公共方法进行分类。

BTW,A类是Mainactivity类。

我正在考虑尝试将Runnable对象作为B类设置中的参数传递,但我不完全确定如何实现它。

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);
    }

}

1 个答案:

答案 0 :(得分: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类的方法。