相关疑难解决方法(0)

华为手机上的"受保护的应用程序"设置,以及如何处理它

我有一台带有Android 5.0的华为P8用于测试应用程序.该应用程序需要在后台运行,因为它跟踪BLE区域.

我发现华为内置了一个名为Protected Apps的"功能",可以通过手机设置(电池管理器>受保护的应用程序)进行访问.这允许选定的应用程序在屏幕关闭后继续运行.

对华为来说很明智,但不幸的是,对于我来说,它看起来像是选择加入,即默认情况下应用程序已经关闭,你必须手动将它们放入.这不是一个showstopper,因为我可以在常见问题解答或打印中建议用户关于修复的文档,但我最近安装了Tinder(用于研究目的!),并注意到它被自动放入受保护的列表中.

有谁知道我的应用程序如何做到这一点?它是清单中的设置吗?这是华为为Tinder启用的东西,因为它是一个受欢迎的应用程序?

android android-manifest

129
推荐指数
4
解决办法
6万
查看次数

如何通过在Android中刷卡杀死应用程序时处理代码?

如果我的应用程序正在运行,我按下主页按钮,应用程序进入后台.现在,如果长按home键并从最近的应用程序列表刷卡它杀死的应用程序,没有人像的事件onPause(),onStop()或者onDestroy()被调用,而该过程被终止.因此,如果我希望我的服务停止,杀死通知和取消注册听众,我该怎么做?我阅读了不少文章和博客,但没有得到任何有用的信息,我没有找到任何有关它的文档.任何帮助,将不胜感激.提前致谢.

android

96
推荐指数
4
解决办法
7万
查看次数

Android应用在被杀时不会调用"onDestroy()"(ICS)

我正在开发一个使用蓝牙通信的Android应用程序(使用一个propetary协议),我需要抓住应用程序被杀的那一刻.

我想使用"onDestroy()"方法,但每次应用程序被杀死时都不会调用它.我注意到当我按下后退按钮时会调用它,有时只有当我从任务管理器中删除应用程序时才会调用它.

问题是:我怎样才能抓住应用程序被杀之前的那一刻?

这是我试图使用的代码:

@Override
public void onDestroy() {
    sendMessage(msg);
    Log.d("SampleApp", "destroy");
    super.onDestroy();
}

@Override
public void finish(){

    sendMessage(msg);
    Log.d("SampleApp", "finish");
    super.finish();
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,每次我从任务管理器关闭应用程序时都不会调用finish()并且不会调用onDestroy.

我怎么处理这个?

android ondestroy android-4.0-ice-cream-sandwich

21
推荐指数
3
解决办法
2万
查看次数

前景服务从奥利奥被杀

我编写了一个前台服务,它适用于低于Oreo的所有操作系统版本.从Oreo开始,应用程序流程在关闭5分钟后被杀死,并从最近删除应用程序.

根据android开发人员文档中的后台执行限制, 操作系统不应该终止正在运行前台服务的应用程序,并且通知窗口中会显示通知.

根据开发人员文档的指导原则.我按照以下步骤启动前台服务.

  1. 前台服务以startForegroundService()方法开始
  2. 在启动服务后的5秒内,将显示使用该服务的通知 startForeground()
  3. 返回START_STICKYonStartCommand()service

我在以下手机上遇到此问题:

  1. OnePlus 5T
  2. 体内
  3. OPPO

我试图阻止前台服务被破坏?

  1. 通过向用户显示系统对话框以禁用打盹模式,禁用应用程序的电池优化.

我试图重启前台服务?

  1. 用于AlarmManager从onTaskRemoved()重新启动服务.请查看此链接了解详情.

根据我的理解,这些制造商已经定制了AOSP,并且不遵守允许前台服务运行的操作系统指南.可能这些制造商已经做到了这一点,因为它给用户带来了很长的电池续航时间

前台服务课

    class DataCaptureService : Service() {

        private var isServiceStarted = false

        override fun onBind(intent: Intent?): IBinder? {
            return null
        }

override fun onCreate() {
        super.onCreate()
        wakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
                    newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WakelockTag123").apply {
                        acquire()
                    }
                }
    }


        override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int …
Run Code Online (Sandbox Code Playgroud)

android android-source android-service

11
推荐指数
3
解决办法
6735
查看次数

通过滑动杀死App时的回调

我有一个涉及导航的应用程序.如果用户启动导航,则会创建一种"navigationLifecycleManager".它存储在应用程序实例中,以便在配置更改,活动等之间切换时幸免于难.

但是,如果用户"退出"应用程序,我想杀死一些后台线程,将一些次要数据存储到应用程序存储中,依此类推.所以我需要一些钩子告诉我应用程序何时退出.

  1. 导航应该在任何活动生命周期中存活(这就是为什么它仍然在应用程序实例中)
  2. 按下主页按钮后导航应该存在.
  3. 通过按"后退",导航不应该在应用程序结束时继续存在.
  4. 通过将其从"最近的应用程序"列表中滑出来导航时,导航不应该存在.

必须通过覆盖"onPause"并检查"isFinishing"来实现.但这并不能解决最近的应用程序列表中的问题.滑动似乎没有任何东西.无论是"的onPause","的onDestroy",也不是"onTerminate"是所谓的活动/应用.

android android-lifecycle

6
推荐指数
1
解决办法
5290
查看次数

应用程序关闭时如何重新启动服务?

我正在使用该服务每 30 秒发送一次通知。当我的应用程序处于后台模式时,它工作正常。每个通知都正确接收。但是当我终止/关闭我的应用程序时,服务停止并且我没有收到任何通知。

任何人都知道如何在应用程序关闭或终止时运行服务?

这是我的清单文件
```

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service
        android:name=".MainService"
        android:enabled="true"
        android:exported="false"
         >
    </service>
    <service android:name=".NewService" >
    </service>

    <activity
        android:name=".MainActivity2"
        android:label="@string/title_activity_main_activity2" >
    </activity>
</application>
Run Code Online (Sandbox Code Playgroud)

`

service notifications android

5
推荐指数
1
解决办法
5314
查看次数

当应用程序被 android 中最近的应用程序杀死时的回调侦听器

让我直接说我的问题。

有一个古老的类似问题: 即使应用程序已从“最近的应用程序”中清除,也要继续服务。请在继续之前浏览链接

在应用程序完全销毁之前,我必须将一些数据保存到本地数据库。

我对服务的onTaskRemoved()方法有以下问题:

  1. 每次从最近的应用程序屏幕停止应用程序(以及服务)时,都不会触发 onTaskRemoved() 方法。
  2. 即使每次都调用 onTaskRemoved() ,该方法也没有完全执行。我的意思是,如果方法中有 20 条语句,则只执行 5 或 10 条语句,然后方法就会中断。就像我有 20 个System.out.println()语句而不是只有 5 个或 10 个或 12 个(任何随机数)语句打印,然后方法中断。

所以我可以依靠 onTaskRemoved() 方法来清理应用程序获取的资源。

这是我的应用程序版本的阻塞问题。我已经尝试了每一个技巧。就像在堆栈中至少有一个活动(我称之为 GhostActivity)一样,如果应用程序从最近的应用程序屏幕中被杀死,我们可以在 onDestroyed() 方法中清理活动。onDestroyed() 被调用,但它有与 onTaskRemoved() 方法完全相同的问题。

几个星期以来我一直在解决这个问题,这很烦人。如果有人有任何解决方案,请告诉我。

service android background-service android-service

5
推荐指数
1
解决办法
1958
查看次数