我在onDestroy()方法中编写了这段代码。
@Override
public void onDestroy()
{
MessageService.this.stopSelf();
messageThread.isRunning = false;
System.exit(0);
super.onDestroy();
}
关闭其他活动中的服务。
stopService(new Intent(MainOptionActivity.this,MessageService.class));
我尝试了很多代码,关闭后台时无法关闭服务。有人能给我一些建议吗?感谢。
答案 0 :(得分:2)
以下是服务类
的简单代码public class MyService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(getApplicationContext(), "MSG onCreate SERVICE", Toast.LENGTH_LONG).show();
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(), "MSG onStartCommand SERVICE", Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
Toast.makeText(getApplicationContext(), "MSG STOP SERVICE", Toast.LENGTH_LONG).show();
super.onDestroy();
}
}
以下是测试此服务的代码
startService(new Intent(this, MyService.class));
new Timer().schedule(new TimerTask() {
@Override
public void run() {
startService(new Intent(getApplicationContext(), MyService.class));
}
}, 5000);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
stopService(new Intent(getApplicationContext(), MyService.class));
}
}, 10000);
这工作得很好。还要在清单
中添加此代码<service android:name=".MyService" />
答案 1 :(得分:1)
请勿在Android上使用System.exit(0)
,而是使用finish
(例如,在活动中)。
但是没有必要停止自己的onDestroy
方法,它实际上会被停止和销毁(这就是onDestroy
方法的用途)。
使用System.exit(0);
停止执行方法,因此系统永远不会达到super.onDestroy();
点,服务也不会被破坏。
尝试
@Override
public void onDestroy() {
messageThread.isRunning = false;
super.onDestroy();
}