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 和其他服务怎么没有被关闭?除非我只是不知道它,因为它没有吐司消息?或者有没有办法只运行一次 onCreate ?

无论如何,感谢大家观看!希望有人能更好地教育我!:)

编辑:新方法想知道这是否正确?

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();

        }
    });
4

1 回答 1

1

我也知道我可以在我的应用程序清单中注册我的接收器,但我希望用户能够控制接收器是否处于活动状态。

然后使用PackageManagerandsetComponentEnabledSetting()启用或禁用您BroadcastReceiver在清单中注册的内容。您无需为了控制“接收器是否处于活动状态”而将用户的 RAM 浪费在服务上。

于 2013-03-19T18:13:00.333 回答