如何从报警管理器调用活动的功能
问题描述:
我在活动中有一个startApplicationService
方法。所以我有一个报警管理器。 startApplicationService
方法正在调用后台服务。我想从我的报警管理器中使用onReceive
方法中的/调用该方法。怎么做?请帮帮我。 :)如何从报警管理器调用活动的功能
编辑:增加了报警管理器类:
public class WatcherAlarm extends BroadcastReceiver
{
private final static String LOG_TAG = WatcherAlarm.class.getSimpleName();
private AccessActivity activity = null;
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(LOG_TAG, "-------------------------- WATCHER ALARM ------ ON RECEIVE");
if(activity != null) {
activity.startApplicationService(intent.getExtras());
}
}
public void startAlarm(AccessActivity activity, Bundle bundle)
{
this.activity = activity;
AlarmManager alarmManager = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(activity, WatcherAlarm.class); // explicit
i.putExtras(bundle);
PendingIntent pi = PendingIntent.getBroadcast(activity, 0, i, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 20, pi); // Millisec * Second * Minute
}
public void stopAlarm(Context context)
{
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, WatcherAlarm.class); // explicit
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
alarmManager.cancel(pi);
}
}
这里是我的startApplicationService
方法:它开始的AsyncTask。
public void startApplicationService(Bundle bundle)
{
try {
task = new ApplicationServiceTask(this);
requestId = task.execute(bundle).get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
我试过从上下文获得活动。但这是不可能的。 :(有没有什么办法说call startApplicationService method to activity
从警报管理器?
谢谢你的每一个建议。
泽克
你能否声明它是'静态'方法。 :P Cos然后bob s你的叔叔。 – 2012-02-16 16:44:34
请参阅我的编辑 – Zeck 2012-02-16 16:50:17