gpt4 book ai didi

android - Android 中通信(客户端/服务器)时屏幕暂停

转载 作者:行者123 更新时间:2023-11-30 04:36:05 24 4
gpt4 key购买 nike

我有一个应用程序,其中有谷歌地图、谷歌地图上的位置叠加层和一个单独的线程,该线程每 30 秒将设备的当前位置发送到服务器。问题是,当线程将位置发送到服务器时,设备的屏幕会停止,直到服务器响应。下面是代码,

全局对象

private Handler handlerTimer = new Handler();

在onCreate方法中

 handlerTimer.removeCallbacks(taskUpdateStuffOnDialog );
handlerTimer.postDelayed(taskUpdateStuffOnDialog , 100);

这里是taskUpdateStuffOnDialog

    private Runnable taskUpdateStuffOnDialog = new Runnable() 
{
public void run()
{
try
{
URL url3 = new URL("http://"+ appState.getURL()+"//iLocator/IDForClient.php?reg_no="+ Device_ID[0]);
HttpURLConnection conn = (HttpURLConnection) url3.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String quote = reader.readLine();
while (quote != null)
{
Device_ID = quote.split("\n");
quote = reader.readLine();
bCheckID = true;
}//End While

positionOverlay.setID(Device_ID[0]);
addEvent(Device_ID[0]);

}//End try
catch (Exception e)
{
e.printStackTrace();
Toast.makeText(MainMapActivity.this, "Communication Issue",Toast.LENGTH_LONG).show();
}//End catch
handlerTimer.postDelayed(this, 9000);
}

};

请告诉我我的代码有什么问题。

最佳答案

问题是,虽然您生成了一个新线程,但您并没有生成一个新的进程。你所做的一切都还在用户界面进程中,这是阻塞的。您可以找到有关该主题的更多信息 on developer.android.com .

解决这个问题的最快和最简单的方法是使用 IntentService类(class)。它一次只允许执行一个 HTTP 请求,但会为您解决所有问题。

关于android - Android 中通信(客户端/服务器)时屏幕暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6825175/

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