我做了一个有广播接收器的应用程序,它在启动时启动服务。该服务有两个线程,一个用于侦听UDP数据包,另一个用于处理数据包,将其转换为消息,并调用在列表视图中显示当前消息的活动。这些消息将通过服务接收的取消数据包从显示中删除。因此,仅显示有效消息。一切正常,直到用户关闭活动。当用户关闭显示活动时,服务停止并重新启动,这会导致服务保留的任何活动消息丢失。如何在每次活动结束时阻止服务重新启动,或者是否有办法阻止用户关闭活动?请指教。
我的清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mcs.rmsg" >
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.QUICKBOOT_POWERON"/>
<application
android:name="com.mcs.rmsg.GlobalState"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MsgView"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:enabled="true" android:exported="true"
android:name=".mstart"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service android:name=".udp"
/>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
答案 0 :(得分:0)
我通过从应用程序中删除显示活动类来修复问题,但是通过创建虚拟活动,它不执行任何操作。打开和关闭此活动不会停止服务。该服务接收UDP数据包并在有效消息时处理它,它会发出音频警报并写入文件。我开发了另一个应用程序来读取文件中的消息并在屏幕上显示