首先,这个问题不是关于我如何防止应用程序被杀死。其实我想把它杀掉。
\n现在问题来了。我的应用程序连接到 BLE 设备,我希望当应用程序在后台时保持连接,但我不希望当用户从最近的应用程序中删除应用程序时保持连接。
\n我实现了一个在连接启动时运行的服务,当应用程序进入后台时我将其发送到前台。我尝试了两种方法,仅bound service当活动被破坏时被破坏,以及started service我停止onTaskRemoved。两个案例都有同样的问题。
问题是,当我不使用该服务并从最近使用的应用程序中删除该应用程序时,它被正确杀死并且 BLE 连接被终止,但是当我开始使用服务时,应用程序进程似乎仍然处于活动状态并且 BLE连接保持不变。
\n我使用 Android Studio profiler 做了一些调查,我可以看到,在我从最近的应用程序中删除该应用程序后,我的应用程序中没有 Activity,也没有运行服务,但 Application 对象仍然存在。
\nLeakanary 也不报告任何内存泄漏。
\n看起来可能和这个问题类似,但是没有答案。它也有点类似于这个问题,但我使用干净的Android,而不是cordova。
\n我调查了 Logcat,在没有服务的流程中我得到:
\nHwRecentsTaskUtils: remove task send broadcast packageName={my_package_name}, userId=0,taskId=16893\nActivityManager: Killing 30468:{my_package_name}/u0a918 (adj 900): remove task\n\xe2\x80\xa6\nWindowManager: WIN DEATH: Window{bcb8d8c u0 {my_package_name}/{my_package_name}.MainActivity}\nRun Code Online (Sandbox Code Playgroud)\n在服务的情况下我得到:
\nHwRecentsTaskUtils: remove task send broadcast packageName={my_package_name}, userId=0,taskId=16894\n\xe2\x80\xa6\nActivityThread: Remove activity client record, r= ActivityRecord{787d7fd token=android.os.BinderProxy@216a996 {{my_package_name}/{my_package_name}.MainActivity}} …Run Code Online (Sandbox Code Playgroud) 我正在 IntelliJ 中使用 servlet 和 Tomcat 创建一个 Web 应用程序。我想使用 JDBC 将我的应用程序连接到 MySQL 数据库。我下载了 MySQL Workbench,连接到它,并创建了一个数据库。
现在,在我的 IntelliJ 项目中,我按照本教程添加了数据库连接,我的属性如下所示:

我的mysql驱动版本是5.1.35,所以应该兼容JDBC 4.0。发现(主要在这里)连接我的数据库我应该只使用:
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试连接时,出现No suitable driver异常。即使我添加
Class.forName(DB_DRIVER).newInstance();
Run Code Online (Sandbox Code Playgroud)
我最终也一样。它仅在我在库和工件中手动向此驱动程序添加 jar 时才有效:

这真的是唯一的方法吗?如果 IntelliJ 自动下载了 jar,当我尝试连接时,它不应该也自动加载它吗?在DriverManager文档中有这样的东西:As part of its initialization, the DriverManager class will attempt to load the driver classes referenced in the "jdbc.drivers" system property.我必须以某种方式配置这个属性吗?
我一直在尝试使用新的 Android WiFi 建议 API,其代码完全取自示例,但每次我尝试连接到网络时,当我调用时,wifiManager.addNetworkSuggestions(suggestionsList)我都会得到状态 3 的响应,这(根据此站点)表示IP提供失败。这意味着什么?我该如何处理?
我的应用程序拥有所有必需的权限,甚至更多权限(CHANGE_WIFI_STATE、ACCESS_WIFI_STATE、INTERNET、ACCESS_FINE_LOCATION、CHANGE_NETWORK_STATE、ACCESS_NETWORK_STATE),并且位置已打开。我尝试了几个 WiFi 网络(所有网络都在 WiFi 设置中可见),但仍然遇到相同的 IP 配置错误。