如果强制关闭,重新启动服务
问题描述:
在我的应用程序中,我每隔一分钟就从活动重新启动服务。但如果应用程序被强制关闭,它将启动服务。那个时候的活动状态是什么。如果强制关闭,重新启动服务
这是我的代码。
void toggleLogging(boolean isStart, int interval)
{
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent loggerIntent = PendingIntent.getBroadcast(this, 0,new Intent(this,AlarmReceiver.class), 0);
long duration = interval * 60 * 1000;
manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(), duration, loggerIntent);
AppSettings.setServiceRunning(this, true);
}
答
是报警登记,即使应用程序被强制关闭,因此没有必要担心
按照您的要求我添加的代码
public class SampleActivity extends Activity{
public static AlarmManager mAlarmManager;
public static PendingIntent mPintent;
public static Intent mIntent;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Context context = getApplicationContext();
SampleActivity.startAlarmManager(context);
}
public static void startAlarmManager(Context context){
SampleActivity.mIntent = new Intent(context, YourService.class);
mAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
mPintent = PendingIntent.getService(context, 0, SampleActivity.mIntent, 0);
Calendar cal = Calendar.getInstance();
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 2000, mPintent);
}
}
然后在启动完成启动相同的报警在manifest资源配置文件
public class SampleBootComplete extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent arg1) {
SampleActivity.startAlarmManager(context);
}
}
注册启动完成接收器
<receiver android:name="com.sample.receiver.SampleBootComplete">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
很确定的警报保持注册,直到重新启动。 – dcow
即使应用程序强制关闭? – Manasi
强制关闭应用程序也会清除警报,至少在4.1+上 - http://*.com/a/14041439/206292 – Krishnaraj