android - Android - 应用程序在 Chrome 启动时启动 - 这怎么可能?
问题描述
我正在开发一个具有奇怪行为的 Android 应用程序——它会在 Chrome 启动时自行启动。Chrome 打开的页面并不重要。我试图弄清楚如何阻止这种情况,但不知道这是怎么发生的。
Manifest 中没有什么不寻常的地方,也没有 Broadcast 监听器。此外,我在 Chrome 设置或任何扩展程序中没有看到任何异常。它发生在许多手机上,但不会发生在其他具有相同应用程序版本的手机上。
我们甚至尝试更改 applicationId - 它仍然会发生。
在 logcat 中,每当发生这种行为时,我只能看到这一行:
I ActivityManager: Start proc 9360:com.company.appthatshouldntstart/u0a269 for activity: rah
这是清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.app">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<application
android:name=".ApplicationSpecifics"
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:excludeFromRecents="true">
<activity
android:name=".Activities.MainActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name=".ServiceSocket"
android:exported="false" />
</application>
</manifest>
我想知道还有哪些其他方法可以使应用程序表现得像这样。
任何帮助都感激不尽!
解决方案
发现了问题。
该应用程序有一个错误的 onDestroy() 逻辑,称为 System.exit(0),我读到这是一种不好的做法。显然,这导致应用程序在某些手机上退出时崩溃,Android 尝试重新启动应用程序。所以你最终关闭了应用程序,但它重新启动。几次重新启动后,应用程序放弃了,您认为您已正确关闭它。
但不是。当打开另一个应用程序(例如 Chrome,但最终我们看到它也发生在其他应用程序中)时,重新启动尝试仍在继续,这给人的印象是 Chrome 以某种方式导致应用程序启动。
因此,当 onDestroy() 逻辑被重写以遵循 Android 最佳实践(主要没有 System.exit(0) 以及其他一些东西)时,应用程序现在可以正确退出并且不再意外启动。
推荐阅读
- ngx-bootstrap - 单击选项卡后加载组件
- javascript - 来自多个文件的 Webpack 全局变量
- c# - Kentico GetUserDataFromAuthCookie() 返回 null
- asp.net-mvc - 剑道网格自定义过滤器日期
- android - 我使用了阶梯式评级对话。我想在某些条件下禁用正或负按钮
- c# - System.BadImageFormatException'发生在您的应用程序中(例如 MyApplication.exe)
- xamarin.forms - Xamarin.Forms - 页面 PopAsync 传递参数
- django - Django 在表单中使用多对多
- mule - 在 mule dataweave 中组合来自不同父数组的 JSON 数组
- c# - 如何在 Asp.net mVC5 的索引列表中仅显示时间