Android 如何调用活动';报警管理器的s功能
我在活动中有一个Android 如何调用活动';报警管理器的s功能,android,android-activity,android-alarms,Android,Android Activity,Android Alarms,我在活动中有一个startApplicationService方法。因此,我有一个报警管理器startApplicationService方法正在调用后台服务。我想在报警管理器的onReceive方法中使用/调用该方法。怎么做?请帮帮我。:) 编辑:添加报警管理器类: public class WatcherAlarm extends BroadcastReceiver { private final static String LOG_TAG = WatcherAlarm.clas
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);
}
}
下面是mystartApplicationService
方法:它正在启动异步任务
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();
}
}
我试图从上下文中获取活动。但这是不可能的(.有没有办法从alarm manager中说调用startApplicationService方法到activity
谢谢你的建议
Zeck否…因为您无法保证在调用您的
onReceive()
时,您试图调用的活动是否存在
您可以做的是使用意图
启动活动
,并附加一个指示调用者是您的广播接收者
。然后活动可以检查该附加值并调用该方法
但是,考虑到您似乎想要做什么。我建议您使用服务
。因为您是在后台进行工作的,所以我看不到希望在活动中这样做的理由(当然,除非您有一个在此未显示的有效理由)
有关类似的示例,请参见我的答案。否…因为您无法保证在调用您的
onReceive()
时,您试图调用的活动是否存在
您可以做的是使用意图
启动活动
,并附加一个指示调用者是您的广播接收者
。然后活动可以检查该附加值并调用该方法
但是,考虑到您似乎想要做什么。我建议您使用服务
。因为您是在后台进行工作的,所以我看不到希望在活动中这样做的理由(当然,除非您有一个在此未显示的有效理由)
查看我的答案,以获得类似的示例。你能将其声明为
静态
方法吗。:p因为bob是你的叔叔。你能将其声明为静态
方法吗。:p因为bob是你的叔叔。谢谢。这是一个很好的答案。:)谢谢。这是一个很好的答案