【问题标题】:Android - How can I check the sender class of the "stopService" Intent?Android - 如何检查“stopService”意图的发送者类?
【发布时间】:2013-09-24 16:04:14
【问题描述】:

我从各个地方停止服务。如何检查命令“stopService(Intent intent)”的发送者何时是我的 NetworkReceivar 类(扩展 BroadcastReceiver)??

这是我的代码,可以更清楚地做到这一点:

public class NetworkReceiver extends BroadcastReceiver{

public void onReceive(Context context, Intent intent) {
    boolean isNetworkDown = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
    if (isNetworkDown) {
        context.stopService(new Intent(context, MyService.class));
    }

我的服务等级:

public void onDestroy() {
    Log.i(TAG, "OnDestroy");
    // if came from NetworkReceiver do something.
    this.updater.interrupt();
    this.updater = null;
    super.onDestroy();
}

【问题讨论】:

  • 现在,我控制它的方式是使用 SharedPreferences 并在广播中添加一个布尔首选项,指示我的意图是否由 NetworkReceiver 启动。

标签: android class android-intent service ondestroy


【解决方案1】:

如何检查“stopService(Intent intent)”命令的发送者何时是我的 NetworkReceivar 类(扩展 BroadcastReceiver)??

AFAIK,你不能。

但是,您可以调用startService(),而不是stopService(),发送一条您的服务解释为“关闭时间”的命令。 Intent 上的某些东西是您的命令,可用于指示发件人,以便您可以区分一个发件人与另一个发件人。并且,该服务可以调用stopSelf() 自行关闭。

【讨论】:

  • 这就是我的想法......好吧,如果没有任何其他方式我更喜欢我这样做的方式,使用共享首选项。谢谢!
猜你喜欢
  • 2012-07-17
  • 2011-04-14
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多