gpt4 book ai didi

java - 如何销毁/终止服务?

转载 作者:行者123 更新时间:2023-11-29 23:15:34 25 4
gpt4 key购买 nike

我的应用程序运行摇动检测服务,但是在我的 MainActivity 中,我有用于注销用户的按钮,我必须在其中注销并终止检测摇动事件的服务。

我在 MainActivity 中注销的方法是:

public void signOutAndFinish(){
//Stop Shakeservice
Intent intent = new Intent(this, ShakeService.class);
stopService(intent);
//Go to login activity
Intent iLoginView = new Intent(this, LoginActivity.class);
startActivity(iLoginView);
}

然而,如果我在注销后摇动我的设备,该服务会识别出摇动,就好像它不会立即杀死它:

Intent intent = new Intent(this, ShakeService.class);
stopService(intent);

onDestroy方法中的代码是:

@Override
public void onDestroy() {
super.onDestroy();
}

如何终止服务,以便在我注销时服务停止?

感谢您的帮助!

最佳答案

您可以在服务的 onDestroy() 方法中发送回您的 Activity 广播,然后执行注销。

下面是上述想法的一些示例代码:

这为您服务:

@Override
public void onDestroy() {
super.onDestroy();
Intent intent = new Intent();
intent.setAction("com.example.broadcast.MY_NOTIFICATION");
intent.putExtra("data","Notice for logout!");
sendBroadcast(intent);
}

这是你的 Activity :

private BroadcastReceiver br = new MyBroadcastReceiver();

@Override
public void onCreate() {
IntentFilter filter = new IntentFilter("com.example.broadcast.MY_NOTIFICATION");
registerReceiver(br, filter);
}

@Override
public void onDestroy() {
unregisterReceiver(br);
}

// An inner class at your activity
public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";

@Override
public void onReceive(Context context, Intent intent) {
YourActivity.this.finish();
// or do anything you require to finish the logout...
}
}

关于java - 如何销毁/终止服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55434117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com