当应用程序被销毁时,定位服务无法正常工作 Mi 设备
Location service is not working Mi devices when app is destroyed
这是我在服务中的代码,请让我知道我遗漏了什么。
代码在其他设备上工作问题仅在 redmi 设备中。
提前致谢。
public class AppLocationServices extends Service implements IAsyncTask{
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(final Intent intent, final int flags,
final int startId) {
if(getBaseContext()!=null){
SessionManagement sessionManagement = new SessionManagement(getBaseContext());
if(sessionManagement.isLoggedIn() && !Util.IsOwner(Util.GetLocalStorage(sessionManagement))){
if(getBaseContext()!=null && intent.getExtras()!=null && intent.getExtras().getString("ClassName").equalsIgnoreCase(ReceiverLocationAlarm.class.getName())){
Util.SetOnReceiverLocationIntent(getBaseContext());
LocationProvider mLocationProvider = new LocationProvider(getBaseContext());
mLocationProvider.connect();
}
else if(getBaseContext()!=null && intent.getExtras()!=null && intent.getExtras().getString("ClassName").equalsIgnoreCase(SenderLocationAlarm.class.getName())){
Util.SetOnSenderLocationIntent(getBaseContext());
DataBaseHelper dataBaseHelper = new DataBaseHelper(getBaseContext());
if(dataBaseHelper.getFromGpsItem().size()>0)
new SendLocationToServer(getBaseContext(),AppLocationServices.this).execute();
}
}else {
LocationProvider mLocationProvider = new LocationProvider(getBaseContext());
mLocationProvider.disconnect();
Util.StopOnReceiverLocationIntent(getContext());
Util.StopOnSendLocationIntent(getContext());
stopSelf();
}
}
return Service.START_REDELIVER_INTENT;
}
@Override
public Context getContext() {
return getBaseContext();
}
@Override
public Fragment getFragment() {
return null;
}
@Override
public void OnPreExecute() {
}
@Override
public void OnPostExecute(String URL, JSONObject jsonObject) {
}
@Override
public void OnErrorMessage(String Message) {
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
在 MI 设备中,当应用程序关闭(销毁)时,您无法 运行 在后台运行服务。许多设备(xiomi,mi等)都有权限管理器的概念。
这是 redmi 设备中发生的特定问题。解决此问题的一种方法是打开 redmi 安全应用程序,打开权限选项卡并启用应用程序的自动启动。否则您可以保留 运行 应用程序。即销毁时自动启动应用程序
这是我在服务中的代码,请让我知道我遗漏了什么。 代码在其他设备上工作问题仅在 redmi 设备中。
提前致谢。
public class AppLocationServices extends Service implements IAsyncTask{
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(final Intent intent, final int flags,
final int startId) {
if(getBaseContext()!=null){
SessionManagement sessionManagement = new SessionManagement(getBaseContext());
if(sessionManagement.isLoggedIn() && !Util.IsOwner(Util.GetLocalStorage(sessionManagement))){
if(getBaseContext()!=null && intent.getExtras()!=null && intent.getExtras().getString("ClassName").equalsIgnoreCase(ReceiverLocationAlarm.class.getName())){
Util.SetOnReceiverLocationIntent(getBaseContext());
LocationProvider mLocationProvider = new LocationProvider(getBaseContext());
mLocationProvider.connect();
}
else if(getBaseContext()!=null && intent.getExtras()!=null && intent.getExtras().getString("ClassName").equalsIgnoreCase(SenderLocationAlarm.class.getName())){
Util.SetOnSenderLocationIntent(getBaseContext());
DataBaseHelper dataBaseHelper = new DataBaseHelper(getBaseContext());
if(dataBaseHelper.getFromGpsItem().size()>0)
new SendLocationToServer(getBaseContext(),AppLocationServices.this).execute();
}
}else {
LocationProvider mLocationProvider = new LocationProvider(getBaseContext());
mLocationProvider.disconnect();
Util.StopOnReceiverLocationIntent(getContext());
Util.StopOnSendLocationIntent(getContext());
stopSelf();
}
}
return Service.START_REDELIVER_INTENT;
}
@Override
public Context getContext() {
return getBaseContext();
}
@Override
public Fragment getFragment() {
return null;
}
@Override
public void OnPreExecute() {
}
@Override
public void OnPostExecute(String URL, JSONObject jsonObject) {
}
@Override
public void OnErrorMessage(String Message) {
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
在 MI 设备中,当应用程序关闭(销毁)时,您无法 运行 在后台运行服务。许多设备(xiomi,mi等)都有权限管理器的概念。
这是 redmi 设备中发生的特定问题。解决此问题的一种方法是打开 redmi 安全应用程序,打开权限选项卡并启用应用程序的自动启动。否则您可以保留 运行 应用程序。即销毁时自动启动应用程序