我有一个应用程序具有在启动时有条件启动的服务(基于xml中定义的复选框首选项)。我的广播接收机类是这样的:BroadcastReceiver在启动时无条件启动服务,无需启动应用程序
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.util.Log;
public class BootServiceReceiver extends BroadcastReceiver {
private static final String TAG = "tweakmanager";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
SharedPreferences prefLights;
prefLights = PreferenceManager.getDefaultSharedPreferences(context);
if (prefLights.getBoolean("checkbox1", false)) {
Log.i(TAG, "doing nothing...");
} else {
Intent p = new Intent();
p.setAction("app.tweaks.Service");
context.startService(p);
}
}
}
}
请注意,服务只应在复选框未选中时启动。默认状态被选中。
现在,正常运行时,所有工作都正常 - 如果复选框被选中,服务不会启动,如果未选中服务,服务将在启动时启动。
问题在于,如果应用程序已安装但从未运行......在这种情况下,即使选中复选框,服务也会在下次启动时启动。我想过写默认的喜好,可以被接收器读取的文件,但我不认为这是最好的解决办法...
这应该是那么容易......我想像我这样的前辈总是采取艰难而复杂的方式。谢谢,我会马上尝试。 – BlooregardQKazoo 2012-07-14 10:49:15
您的建议工作得很好,谢谢! – BlooregardQKazoo 2012-07-14 12:02:35