我正在开发一个安卓应用程序,它使用蓝牙与附近的PC进行通信。这个应用程序在我自己的设备(三星Galaxy 3-CM 12.1)上工作得很好,但在我的测试版测试器上却没有。
简单地说,这个应用程序允许人们通过蓝牙和他们的手机从他们的电脑(用我的C# WPF应用程序)编写和接收短信。
我的测试器是使用三星Galaxy 4股票ROM (棒棒糖)。
一开始,我以为当他的屏幕关闭时,Android会杀死MainActivity,这个线程可以容纳几个线程,包括一个保持连接活动的线程(使用inpustream.read()阻塞方法)。这种行为不会发生在我自己的设备上:我可以在不插入手机的情况下将连接维持一整夜。
不过,有人警告我,使用服务可以避免这样的问题,因为安卓在不同设备之间的行为方式不同。所以我更新了我的应用程序,让我的MainActivity使用我的MainService来生成相关的线程。但这并没有改变任何事情。
正如我的标题所暗示的,问题在于他的防病毒,更确切地说是: AVG。我不知道这类杀毒软件是如何在Android上工作的,我甚至不使用它。通过在他的根植的Galaxy 4上用钛备份冻结AVG,我的应用程序停止崩溃,现在工作非常正常。
所以我想知道,为什么当设备屏幕关闭时,AVG就会断掉我的应用程序呢?我的应用程序应该如何运行,这样就不会发生在任何其他使用AVG或任何其他防病毒软件的用户身上?我该怎么做才能不让我的应用看上去像个嫌疑犯?
发布于 2015-08-08 14:56:34
我不知道AVG到底对你的app.But做了什么--我认为在安卓设备休眠或发送/接收SMS.The AVG时,AVG可能不会让你的应用程序强行打开蓝牙或使用蓝牙--这是一种反病毒应用,它们中的大多数都有很多权限限制或节能策略,特别是在基于根的Android设备或已经在Android中的第一部分应用程序上。
试着弄清楚AVG对你的app.And做了什么,然后用温和和聪明的方法解决你的问题。
例如:
1.如果AVG不允许您使用BluetoothAdapter.enable()强制打开蓝牙,请尝试使用Activity.startActivityForResult()来让用户选择是否打开蓝牙。
2.如果在安卓设备为sleep.You时,AVG不允许使用蓝牙,则可以尝试使用WakeLock.acquire()来保存Android设备。
3.如果AVG不允许您使用短消息发送或receiving.You可以改变另一种通信协议,SPP或BLE或其他什么。
也许你听说过Xiaomi.If,你是中国版的安卓开发者,因为小米在中国很受欢迎,你必须和小米一起适应,然后你会发现小米真的很适合在广州的安卓开发者。
对于最初的Android.For例子,小米并没有做一些很棒的事情:
AlertDialog..getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); --你不能提醒小米的TYPE_SYSTEM_ALERT对话框,他们什么也不告诉你。2.小米修改了大量的原创主题。
3.小米改变了安卓( Android )的报警计时机制,而手机则是睡眠,这对那些具有定时功能的应用来说实在是太糟糕了。
上面的问题是我在Android开发中遇到的问题,有些问题我可以解决,有些你没有机会改变它。
记住: Android设备的适应性在于,你必须让你的用户知道你的应用程序在大多数流行的Android设备上都能工作,开发者试图让应用程序在大多数Android设备上运行,但它可能不适用于某些带有定制ROM或特殊第三方应用程序的Android设备。没错,这就是Android。
如果这个问题不能解决,那就不是问题了!
https://stackoverflow.com/questions/31670483
复制相似问题