我正在开发应用程序,通过POST请求启动从服务器获取信息的服务。
在我的情况下,用户可以取消加载数据(当他选择ListView
中的项目开始新的活动,我在线程中启动服务。)
现在,如果用户按Back返回previos活动,我调用了stopService(intent)
。调用方法onDestroy()
,但从Internet加载数据不会停止
我的服务起点:
private void makeNewSync() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
Intent intent =new Intent(getApplicationContext(),NewsLoaderService.class);
intent.putExtra("NEW_GLOBAL_ID", newGlobalId);
startService(intent);
}
});
thread.setPriority(10);
thread.start();
}
我的后退按钮听众:
@Override
public void onBackPressed() {
if (isFullScreen) {
changeFullScreenMode(View.GONE);
} else {
stopService(new Intent(getApplicationContext(),NewsLoaderService.class));
super.onBackPressed();
}
}
我服务的onDestroy()方法:
@Override
public void onDestroy() {
Log.d("MyLOg", "loader service is: " + isRunning + " stopped.");
if (isRunning) {
isRunning = false;
}
super.onDestroy();
}
答案 0 :(得分:0)
当您使用stopService方法停止服务时,如果您的服务当前正在运行,这将调用您的服务的onDestroy方法。在onDestory方法中,您编写代码来停止您的任务。
答案 1 :(得分:0)
不要在单独的线程中启动服务或在您的情况下使用IntentService或由处理程序启动服务,因为服务在ui线程中运行