【发布时间】:2015-09-08 07:59:07
【问题描述】:
我正在使用Android Beacon Library 2.0,但信标后台服务出现了一个奇怪的问题。我至少手动启动我的应用程序一次,然后关闭设备并重新启动。如果我转到正在运行的应用程序/服务列表,我会看到我的应用程序的名称(1 个进程,1 个服务),但几秒钟后它会从列表中消失,因为它被 Android 杀死了。有时 2 或 3 分钟后它会再次出现,但几秒钟后消失。 这种行为不是“规则”,有时服务运行没有问题并保持活动状态。
这是我的清单:
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
android:icon="@drawable/my_drawable"
android:label="MyApp"
android:theme="@android:style/Theme.Holo"
android:name="BeaconReferenceApplication">
<activity
android:name="org.altbeacon.beaconreference.MonitoringActivity"
android:theme="@android:style/Theme.Holo"
android:label="MyApp" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="org.altbeacon.beaconreference.RangingActivity"
android:theme="@android:style/Theme.Holo"
android:label="MyApp" >
<intent-filter>
</intent-filter>
</activity>
对于测试,我使用的是 Samsung Galaxy tab3 (Android 4.4.2) 和 Samsung Galaxy tab4 (Android 4.4.2)
我已经尝试检查 logcat 消息,这些行也许可以解释一些事情。
E/BeaconManager(4802): 无法联系服务来设置扫描周期
D/BeaconManager(4802):此消费者未绑定。捆绑: org.altbeacon.beaconreference.BeaconReferenceApplication@42320918
D/BeaconManager(4802):消费者数量现在是:1
V/ApplicationPolicy(2365): isApplicationStateBlocked userId 0 pkgname org.altbeacon.beaconreference
D/CustomFrequencyManagerService(2365):获取DVFSLockLocked:类型: DVFS_MIN_LIMIT 频率:1400000 uid:1000 pid:2365 pkgName: ACTIVITY_RESUME_BOOSTER@5
W/ActivityManager(2365): mDVFSHelper.acquire()
D/PhoneStatusBar(2551):setTransGradationMode=false, mTransparentMode=false,mSemiTransparentMode=false, mMultiWindowMode=false
W/ResourceType(2365):获取价值时没有已知的包 资源号 0x7f020000
D/StatusBarManagerService(2365): tr p:2365,o:f
W/WindowManager(2365): 令牌{432ad010 ActivityRecord{432ace98 u0 org.altbeacon.beaconreference/.MonitoringActivity t3}} 创建失败 起始窗口
W/WindowManager(2365): android.content.res.Resources$NotFoundException:资源 ID #0x7f020000
W/WindowManager(2365):在 android.content.res.Resources.getValue(Resources.java:2354)
W/WindowManager(2365):在 android.content.res.Resources.getDrawable(Resources.java:1919)
W/WindowManager(2365):在 com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1037)
W/WindowManager(2365):在 com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3478)
W/WindowManager(2365):在 com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1886)
W/WindowManager(2365):在 com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:2639)
W/WindowManager(2365):在 com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:9140)
W/WindowManager(2365):在 android.os.Handler.dispatchMessage(Handler.java:102)
W/WindowManager(2365): 在 android.os.Looper.loop(Looper.java:146)
W/WindowManager(2365): 在 adroid.os.HandlerThread.run(HandlerThread.java:61)
D/PointerIcon(2365):setMouseIconStyle1 指针类型:1001iconType:101 标志:0
D/PointerIcon(2365): setMouseCustomIcon IconType 相同。101
I/BeaconService(4802):beaconService 版本 2.0-samsung1 正在启动 向上
I/BeaconService(4802):SDK 为 18 或更高版本。使用原生安卓 BLE扫描API
D/PhoneStatusBar(2551):setTransGradationMode=false, mTransparentMode=false,mSemiTransparentMode=false, mMultiWindowMode=false
W/ResourceType(2365):获取价值时没有已知的包 资源号 0x7f020000
W/WindowManager(2365): 令牌{4335a9f8 ActivityRecord{4335a880 u0 org.altbeacon.beaconreference/.RangingActivity t3}} 创建失败 起始窗口
W/WindowManager(2365): android.content.res.Resources$NotFoundException:资源 ID #0x7f020000
W/WindowManager(2365):在 android.content.res.Resources.getValue(Resources.java:2354)
W/WindowManager(2365):在 android.content.res.Resources.getDrawable(Resources.java:1919)
W/WindowManager(2365):在 com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1037)
W/WindowManager(2365):在 com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3478)
W/WindowManager(2365):在 com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1886)
W/WindowManager(2365):在 com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:2639)
W/WindowManager(2365):在 com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:9140)
W/WindowManager(2365):在 android.os.Handler.dispatchMessage(Handler.java:102)
W/WindowManager(2365): 在 android.os.Looper.loop(Looper.java:146)
W/WindowManager(2365): 在 android.os.HandlerThread.run(HandlerThread.java:61)
D/BtGatt.GattService(3581): onScanResult() - 地址=F4:B8:5E:E4:BA:4A, rssi=-53
D/BtGatt.GattService(3581):Binder 已死 - 取消注册客户端 (5)!
E/BtGatt.GattService(3581):异常:android.os.DeadObjectException
W/InputDispatcher(2365): 通道 ~ 消费者关闭输入通道或 发生错误。事件=0x9
I/WindowState(2365): 赢得死亡: Window{43379c08 u0 org.altbeacon.beaconreference/org.altbeacon.beaconreference.RangingActivity}
E/InputDispatcher(2365): 通道 ~ 通道已不可恢复地损坏 并将被处置!
W/InputDispatcher(2365): 尝试注销已注销 输入通道
I/WindowState(2365): WIN DEATH: Window{43366f58 u0 org.altbeacon.beaconreference/org.altbeacon.beaconreference.MonitoringActivity}
我的应用程序正确检测到范围内的所有信标,但我需要一个有效的后台服务才能长时间工作。 你能告诉我我做错了什么吗?
编辑
我可以假设如果我在正在运行的程序列表中看到具有“1 个进程和 1 个服务”的应用程序,则该服务处于活动状态并且正在运行,如果我看不到它,则该进程没有运行?
【问题讨论】: