android 停止服务执行,android - 为什么在停止服务(执行onDestroy已执行)后,服务中的变量没有“重置”?...

在一个活动中,我定义了以下按钮侦听器:final Button button = (Button) findViewById(R.id.buttonExit);

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

stopService(new Intent(StartupActivity.this, SamcomService.class));

finish();

}

});

如您所见,该按钮应该停止正在运行的服务(在上一步中创建),然后自行完成。

当我按下按钮时,service.ondestroy将按预期执行。在ondestroy中,我做了一些清理,然后最后调用super.ondestroy():

@Override

public void onDestroy() { // the service onDestroy

// Do some cleaning

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

mNotificationManager.cancel(1);

// more cleaning

Toast.makeText(this, "The service has been stopped! Wii!", Toast.LENGTH_LONG).show();

super.onDestroy();

}

在我的世界里,这意味着这项服务已经死了,埋了,还有其中所有的变数。对吗?

嗯,看起来不像。

问题是,我的服务中有一个字符串,在单击按钮停止服务之前,我会将文本附加到该字符串。像这样的:

public class SamcomService extends Service {

private String startupText = "";

private void addTextToStartup(String text)

{

startupText += text;

// Sending a broadcast, not relevant

// ...

}

// ...

}

当我再次启动我的应用程序时,这个字符串StartupText不会重置!好像服务根本没被杀。StartupText包含在上一次运行中添加到它的所有文本。

为什么?我错过了什么?服务不是死了吗?当我再次启动应用程序时,将调用serviceocreate方法,这意味着它是从头开始的……

---编辑---

我刚读到:

What exactly does onDestroy() destroy?

这意味着灾难不会真的摧毁任何东西。对的?它很蹩脚,而且非常烦人。在这里有一个很受欢迎的线索,所以我两年前就开始讨论这个问题了,我想……:

Is quitting an application frowned upon?

最佳答案

所以,正如我在上面的编辑中所写的:

我刚读到:What exactly does onDestroy() destroy?

这意味着灾难不会真的摧毁任何东西。对的?它很蹩脚,而且非常烦人。在这里有一个很受欢迎的帖子,所以我两年前就开始讨论这个问题了,我想……:Quitting an application - is that frowned upon?

然而,我解决了我的问题,当然每个人都会说“不!”去。不过,它工作得很好。我只是将System.Exit(0)放在服务中的ondestroy方法中。不再有延迟变量=)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值