我正在开发一个带有闹钟功能的应用程序。为此,我正在使用服务来检查设备当前时间与数据库中的时间是否匹配。
我的问题是,如果从后台删除应用程序或设备重新启动,则该服务将停止。我已经使用了START_STICKY使其在后台运行,并使用广播接收器在重新启动时启动它。
主要问题是,我编写的所有内容都在MOTO G设备上运行良好。无论重启还是从后台清除,该服务都可以正常运行。但是,在小米手机和华为荣耀手机上,一旦从后台清除或重新启动,服务就会停止。
服务代码:
我的问题是,如果从后台删除应用程序或设备重新启动,则该服务将停止。我已经使用了START_STICKY使其在后台运行,并使用广播接收器在重新启动时启动它。
主要问题是,我编写的所有内容都在MOTO G设备上运行良好。无论重启还是从后台清除,该服务都可以正常运行。但是,在小米手机和华为荣耀手机上,一旦从后台清除或重新启动,服务就会停止。
服务代码:
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>
还有其他人遇到过这个问题吗?我认为这是修改后的操作系统的问题,但无论如何,我的应用程序都不能正常工作。请帮忙。