gpt4 book ai didi

android - 即使在 Android 中调用 onDestroy 方法后服务也不会停止

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:47 25 4
gpt4 key购买 nike

我还是 android 的新手。我使用 stopService 调用 onDestroy 方法。 onDestroy 方法被调用,因为我可以看到 toast 消息。但是用于发送位置更新的无限循环一直在运行。有什么我需要改变的吗?

public class myservice extends IntentService {
LocationManager locationManager ;
public myservice() {
super(myservice.class.getName());
}
@Override
protected void onHandleIntent(Intent intent) {
String numb=intent.getStringExtra("num");
for (;;) {
send(numb);
}
}

public IBinder onBind(Intent intent) {
return null;
}

public void send(String numb) {
locationManager = (LocationManager)this
.getSystemService(Context.LOCATION_SERVICE);
if (ContextCompat.checkSelfPermission( this, android.Manifest.permission.ACCESS_COARSE_LOCATION ) == PackageManager.PERMISSION_GRANTED ) {}
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Geocoder geocoder;
geocoder = new Geocoder(this, Locale.getDefault());
try {
Thread.sleep(3000);
List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
Toast toast1 = Toast.makeText(this, "message sent", Toast.LENGTH_SHORT);
toast1.setText(numb.toString());
toast1.show();
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(numb, null, "current postition is" + addresses.get(0).getAddressLine(0) + "," + addresses.get(0).getAddressLine(1) + "," + addresses.get(0).getAddressLine(2), null, null);
Toast.makeText(getApplicationContext(), "SMS sent.", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "SMS faild, please try again.", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}

@Override
public void onDestroy() {
Toast.makeText(getApplicationContext(), "DESTROY2", Toast.LENGTH_LONG).show();
super.stopSelf();
super.onDestroy();
}
}

最佳答案

您不会自己调用 onDestroy()。永远不要自己调用生命周期方法。 Android 会在服务停止时调用它们。

子类化 IntentService 并不是管理正在进行的工作的最佳方式。您最好自己管理一个线程并管理传递给该服务的启动和停止命令。这可不是一件容易的事。

http://developer.android.com/guide/components/services.html

关于android - 即使在 Android 中调用 onDestroy 方法后服务也不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587773/

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