我有一個應用程序具有在啓動時有條件啓動的服務(基於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