gpt4 book ai didi

android - 如何使 IntentService 的线程保持 Activity 状态?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:16:46 25 4
gpt4 key购买 nike

我正在编写一个跟踪用户位置的测试应用程序。这个想法是我可以启动一个服务,然后注册位置更新。现在我为此使用 IntentService。

服务代码(不起作用...)如下所示:

public class GpsGatheringService extends IntentService {

// vars
private static final String TAG = "GpsGatheringService";
private boolean stopThread;

// constructors
public GpsGatheringService() {
super("GpsGatheringServiceThread");
stopThread = false;
}

// methods
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand()");
return super.onStartCommand(intent, flags, startId);
}

@Override
protected void onHandleIntent(Intent arg0) {
// this is running in a dedicated thread
Log.d(TAG, "onHandleIntent()");
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d(TAG, "onStatusChanged()");
}

@Override
public void onProviderEnabled(String provider) {
Log.d(TAG, "onProviderEnabled()");
}

@Override
public void onProviderDisabled(String provider) {
Log.d(TAG, "onProviderDisabled()");
}

@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "onLocationChanged()");
}
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

while (!stopThread) {
try {
Log.d(TAG, "Going to sleep...");
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy()");
stopThread = true;
}

目前唯一发生的事情是“Going to sleep...”的输出。我需要一些机制来保持线程处于 Activity 状态(因为状态更新不再可以访问监听器)并且不会浪费 cpu 时间(我认为忙循环不是首选方式)。即使有大量其他方法如何实现应用程序行为(记录 gps 坐标),我也对这种方式的解决方案感兴趣,以学习解决此类问题的技术!

最佳答案

How do I keep the Thread of an IntentService alive?

你不知道。在这种情况下,您不要使用 IntentService

I need some mechanism which keeps the thread alive (because else the listener is not reachable anymore for status updates) and doesnt waste cpu time (I think busy looping is not the preferred way)

不,在这种情况下 Service 没问题,因为您可以控制服务何时消失,您可以控制您创建的任何线程的生命周期等。IntentService不适合您的预期目的,因为控制服务何时消失并且控制线程的生命周期。

关于android - 如何使 IntentService 的线程保持 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11700288/

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