Sha*_*med 4 java android android-studio
我是 Android 新手,现在我正在研究一个基于 GPS 的项目。我从互联网(traccar)得到了源代码。我的要求就像应用程序应该每 1 公里或每 1 小时更新一次位置。但问题是该应用程序在一段时间(10 - 20 分钟)后无法在后台运行。有什么解决办法吗?
当应用程序启动时,我应该怎么做(在代码中)从电池优化中排除这个应用程序?是否可以 ?
我认为你有两个不同的问题:
1) 如果你想让你的应用程序在后台运行,你应该使用前台服务。这样系统就不会将您的应用程序视为在后台,并且其进程被终止的机会将大大降低。缺点是只要您的服务在前台,您就需要显示永久通知。
2) 您不能自己将您的应用排除在电池优化之外,但您可以提示用户设置将您的应用列入白名单。为此,您可以参考官方文档,您需要向Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS清单添加权限,然后使用操作ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS启动意图。然后用户将能够将您的应用程序列入白名单,只有她/他可以这样做,否则每个应用程序都会将自己列入白名单,而电池优化的目的将被违背。
在清单文件 Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 中添加此权限
在运行时在活动的 onCreate 方法内请求权限...
PowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(POWER_SERVICE);
String packageName = "org.traccar.client";
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Intent i = new Intent();
if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
i.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
i.setData(Uri.parse("package:" + packageName));
startActivity(i);
}
}
Run Code Online (Sandbox Code Playgroud)
这是调试模式下的代码图像:

这将是应用程序中的视图:

但应用程序无法正常工作,因为它处于无限制模式(后台活动)。我希望应用程序以无限制模式运行。
| 归档时间: |
|
| 查看次数: |
4571 次 |
| 最近记录: |