0
我知道我可以使用正在進行的通知讓我的服務保持活動狀態,但我有一個持有廣播接收器的服務。我不想使用通知來簡單地握住我的廣播接收器。我知道我也可以在我的應用程序的清單中註冊我的接收器,但我希望用戶能夠控制接收器是否處於活動狀態。如何在沒有正在進行通知的情況下讓服務保持活躍狀態
以下是不斷重新啓動的服務。
public class DockServiceListener extends Service{
IntentFilter filter;
BroadcastReceiver mReceiver;
public void onCreate() {
super.onCreate();
Toast.makeText(getApplicationContext(), "Receiver started!", Toast.LENGTH_SHOR
filter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
mReceiver = new DockReceiver();
}
public int onStartCommand(Intent intent, int flags, int id) {
super.onStartCommand(intent, START_STICKY, id);
registerReceiver(mReceiver, filter);
return id;
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
很簡單。我也知道它可能是Android清理,但Facebook Messenger和其他服務如何不被關閉?除非我不知道它導致它沒有吐司消息?或者有沒有辦法只運行一次創建?
好無論如何,謝謝大家的期待!希望有人能更好地教育我! :)
編輯:新方法想知道這是正確的嗎?
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName dockReceiver = new ComponentName(getApplicationContext(), DockReceiver.class);
pm.setComponentEnabledSetting(dockReceiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
finish();
}
});
stopBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName dockReceiver = new ComponentName(getApplicationContext(), DockReceiver.class);
pm.setComponentEnabledSetting(dockReceiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
finish();
}
});
我編輯了我的問題,是新的編輯方式嗎?它似乎在工作。我在我的Manifest中激活它,它似乎是用按鈕來完成這項工作。只是想知道我的語法和位置是否正確。我確實將「0」更改爲「-1」,看起來更平滑。 – Seth 2013-03-19 18:41:21
@Seth:無論你看到它,你都可以擺脫'getApplicationContext()'。我不知道'finish()'是否有必要,這取決於你想要做什麼。 – CommonsWare 2013-03-19 18:57:16
我在按鈕上點擊'finish()',使用戶不必手動按下後退按鈕或主頁按鈕即可離開我的活動。只是試圖爲用戶刪除不需要的步驟。由於沒有Context參數,所以當我刪除'getApplicationContext()'時會出錯。這就是eclipse所說的「ComponentName(Context,)」它適用於我包含'getApplicationContext()'時是否還有別的東西我應該使用呢? –
Seth
2013-03-19 19:29:06