如果强制关闭,重新启动服务

问题描述:

在我的应用程序中,我每隔一分钟就从活动重新启动服务。但如果应用程序被强制关闭,它将启动服务。那个时候的活动状态是什么。如果强制关闭,重新启动服务

这是我的代码。

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

很确定的警报保持注册,直到重新启动。 – dcow

+0

即使应用程序强制关闭? – Manasi

+0

强制关闭应用程序也会清除警报,至少在4.1+上 - http://*.com/a/14041439/206292 – Krishnaraj

是报警登记,即使应用程序被强制关闭,因此没有必要担心

按照您的要求我添加的代码

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> 
+2

但是它们在重新启动时被清除。如果您希望继续播放PendingIntent的内容,则需要请求在启动完成时从系统接收ON_BOOT_COMPLETE意图的权限,然后在收到意图时再次注册该警报。 – dcow

+0

是的,她正好处理引导完成接收器的事情,我同意你大卫,我接受你的回答 – Naga

+0

但当我做设置>管理应用程序>强制关闭。它不重新启动我的服务。我有点困惑。 – Manasi