如何阻止我的应用程序从干净的主Android应用程序休眠

时间:2016-06-30 12:36:39

标签: android performance android-service android-permissions

我开发了一款可以为用户提供服务的应用。我的目标群体非常频繁地使用干净的主应用程序,这完全杀死了我的应用程序及其服务。

由于他们没有收到通知。 我无法根据他们的位置提供最好的工作(因为服务也被关闭)。

即使干净的主人关闭它,我怎样才能重启我的应用程序?

2 个答案:

答案 0 :(得分:0)

2种方式做到这一点。
     1.不要进入清洁工的清单(通过操作系统的温和消耗资源,如电池,数据,处理器)
     2.获取设备管理权限,然后用户甚至无法卸载我们的应用程序 (强烈不推荐)
然后他们就不会从任何其他应用程序甚至用户那里选择强制停止或卸载。

<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Your ASP.NET application</title>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />

在xml文件夹中定义device_admin.xml

public class DeviceAdminControl extends DeviceAdminReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
}

@Override
public void onEnabled(Context context, Intent intent) {
    super.onEnabled(context, intent);
}

@Override
public void onDisabled(Context context, Intent intent) {
    super.onDisabled(context, intent);
 }
}

在清单中输入

<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
   <uses-policies>
    <force-lock />
  </uses-policies>
</device-admin>

现在我们必须要求主要活动的用户许可

     <receiver
        android:name=".DeviceAdminControl"
        android:description="@string/app_name"
        android:label="test"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
        <meta-data
            android:name="android.app.device_admin"
            android:resource="@xml/device_admin" />

        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
        </intent-filter>
    </receiver>

完成这些步骤后,这将是结果

   enter image description here

如果您想在此之后卸载
   设置&GT;&GT;安全&GT;&GT;设备管理&gt;&gt;选择您的应用&gt;&gt;删除权限 - 现在可以卸载。

答案 1 :(得分:0)

您应该将服务设置为前台服务,这样您的服务将以与任何音乐播放器应用程序相同的方式保持运行。

  

前台服务是一种服务,被认为是用户积极意识到的东西,因此在内存不足时不会成为系统杀死的候选者。前台服务必须为状态栏提供通知,该通知位于&#34;正在进行的&#34;标题,这意味着除非服务被停止或从前台删除,否则不能解除通知。

您可以在此处查看Android官方文档:https://developer.android.com/guide/components/services.html#Foreground

在您的服务中,您只需要调用此方法:

startForeground(ONGOING_NOTIFICATION_ID, notification);

并停止服务在前台

stopForeground(true);