安卓服务自动停止

标签 android android-activity android-service

我正在制作一个具有警报功能的应用程序。我正在为此使用服务,它会根据我的数据库中的时间检查设备的当前时间。

我的问题是这个 service如果应用程序从后台删除或设备为 rebooted 则停止.我用过START_STICKY让它在后台运行并使用 broadcast receiver在重启时启动它。

主要担心的是,无论我编写什么代码,都在 MOTO G 上工作设备。重新启动,从后台清除一切,服务运行良好。但是在Xiomi电话和Huawei Honour , 一旦从后台清除或重新启动,它就会停止。

Service代码:

public class RemindService extends Service {

final long delayMillis=500;
Handler h=null;
Runnable r;
SharedPreferences sp;

PendingIntent pendingIntent;

private static final int NOTIFY_ME_ID=1337;
@Override
  public void onCreate() {

    h=new Handler(Looper.getMainLooper());
}


@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags,int startId) {



    r = new Runnable() {

           public void run() {


          //SOME OF MY IF-ELSE CONDITIONS


            Intent myIntent = new Intent(RemindService.this, ReminderPopUp.class);
            int randomPIN = (int)(Math.random()*9000)+1000;
            pendingIntent = PendingIntent.getActivity(RemindService.this, randomPIN, myIntent,PendingIntent.FLAG_ONE_SHOT);
            AlarmManager alarmManager = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC|AlarmManager.RTC_WAKEUP, System.currentTimeMillis() , pendingIntent);



            h.postDelayed(this, delayMillis);

        }
      };

    h.post(r);
    return Service.START_STICKY;

}
@Override
  public void onDestroy() {
    h.removeCallbacks(r);

}

}

我的 Manifest声明:

<service
        android:name="test.aguai.medieazy.RemindService"
        android:enabled="true" />

    <intent-filter>
        <action android:name="test.aguai.medieazy.START_SERVICE" />
    </intent-filter>

有没有人遇到过这个问题?我认为这是修改操作系统的问题,但无论如何我的应用程序无法正常工作。请帮忙。

最佳答案

我不会不断地轮询设备数据库,而是使用我在这个答案中描述的 AlarmManager 服务:

Android Polling from a Server periodically

将闹钟设置为在第一个预定时间触发。当它触发时,设置下一次等等。无需一次设置所有警报,因为一次只能触发一个警报。

当警报响起时,您可以启动一个服务来执行您需要的任何任务(包括下一个警报的设置)

关于安卓服务自动停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31108456/

相关文章:

java - 如何为 Android 应用程序创建提示或指南

java - 避免一次又一次地从 JSON 中获取数据

android - 覆盖所有 Android Activity 的 OnResume() 方法

android - 单击后退按钮,MediaPlayer 崩溃 Android

android - setBackgroundDrawable 无法正常工作

android - 检测电梯内的安卓设备

c# - 内存泄漏处理 Xamarin.Forms

android - onActivityResult 在调用设置时总是返回 0 (RESULT_CANCELED)

android - 服务在特定时间运行 Android

android - stopSelf() 是否保证服务停止(以及如何)?如果是这样,是否需要返回(以防内部调用 stopSelf)?