【发布时间】:2021-08-14 10:57:46
【问题描述】:
在这里我尝试了简单的服务程序。启动服务工作正常并生成 Toast 但停止服务不会。这个简单服务的代码如下:
public class MailService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
public void onCreate(){
super.onCreate();
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
}
public void onDestroyed(){
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
}
调用该Service的Activity代码如下:
public class ServiceTest extends Activity{
private Button start,stop;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.service_test);
start=(Button)findViewById(R.id.btnStart);
stop=(Button)findViewById(R.id.btnStop);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startService(new Intent(ServiceTest.this,MailService.class));
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopService(new Intent(ServiceTest.this,MailService.class));
}
});
}
}
使用在 onDestroy() 方法中生成 toast 的停止按钮帮助我停止服务。我已经在这里看到了很多关于停止服务问题的帖子,但并不令人满意,所以发布了新问题。希望得到满意的答复。
【问题讨论】:
-
stopService(serviceIntent)不起作用吗? -
“另外,请记住,服务被销毁的确切时间取决于 Android,可能不会立即生效。” 来自:stackoverflow.com/questions/2176375/android-service-wont-stop/…
-
@chris : 我认为我在上面实现的 stopService(serviceIntent) 方法不起作用,因为 onDestroy() 的 Toast 在停止按钮单击时没有发生。
-
@bigstone:这是否意味着我的 stopService() 和 onDestroy() 方法正常工作,但当我按下停止按钮时不能立即工作?
-
@Ravi:是的。 Android 可能会决定有足够的资源将服务保留在内存中,以便在再次需要时准备好。