Android 使用AlarmManger调用活动中的特定方法
我如何使用AlarmManager调用活动的特定方法,在我的情况下,我需要在2小时后通过调用活动的KillMyServer方法停止服务。Android 使用AlarmManger调用活动中的特定方法,android,service,Android,Service,我如何使用AlarmManager调用活动的特定方法,在我的情况下,我需要在2小时后通过调用活动的KillMyServer方法停止服务。 我不能使用定时器或延迟后,因为如果应用程序进入后台,Android可能会在一段时间后关闭它,但AlarmManager会继续存在。为什么要在这里使用Alarm?您可以通过对服务调用stopself()方法来停止服务 public class MyService extends Service { public static final String A
我不能使用定时器或延迟后,因为如果应用程序进入后台,Android可能会在一段时间后关闭它,但AlarmManager会继续存在。为什么要在这里使用Alarm?您可以通过对服务调用stopself()方法来停止服务
public class MyService extends Service {
public static final String ACTION_START_TIMER = "com.sample.myapp.action.ACTION_START_TIMER";
private TimerReceiver receiver;
@Override
public void onCreate() {
super.onCreate();
receiver = new TimerReceiver();
IntentFilter filter = new IntentFilter(ACTION_START_TIMER);
registerReceiver(receiver, filter);
}
public void runKillTimer() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
stopSelf();
}
}, 2 * 60 * 60 * 1000);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
private class TimerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
runKillTimer();
}
}
}
public class MyActivity extends Activity {
@Override
protected void onStop() {
super.onStop();
Intent intent = new Intent(MyService.ACTION_START_TIMER);
sendBroadcast(intent);
}
}
因为如果应用程序转到后台,Android可能会在一段时间后关闭它,但AlarmManager将继续存在。如果应用程序转到后台,活动可能会关闭,但服务将继续存在,直到出现内存不足的情况(很少发生)。所以你们可以在服务中编写处理程序代码,我需要在应用程序进入后台后立即启动kill timer。如何将其添加到服务中?将服务绑定到活动,并从活动的onStop()启动服务中的kill timer我也这么做了,但kill timer无法存活数小时,只能存活约1小时!为什么要使用
活动来执行此操作?AndroidActivity
类被设计成一个UI框架,允许用户和应用程序之间进行直接交互。这不是一个普通的“工作马”类。