相关疑难解决方法(0)

即使使用Lock,Wifi也会睡觉

摘要:即使获得wifi锁定,当手机使用电池运行时,WiFi会在一段时间后断开连接.

我已经使用启动线程的按钮将问题简化为单个活动.它只发送100.000个字符串到PC上运行的echo服务器(每100ms一个字符串).见下面的代码.我可以通过WireShark查看流量,并且echo服务器也会显示字符串.注意在开始发送之前(当然是在发布之后)获取WiFi和电源锁.

但是,当手机使用电池运行并且用户关闭手机时,它会持续发送字符串一段时间,然后WiFi断开连接,手机甚至不响应ping.断开连接需要600到6000秒(数字是那么圆,所以我认为它们很重要).

它在A/C连接时非常有效,所以我猜它与电源管理有某种关系.

为了测试它,我只需启动活动,启动echo服务器,启动WireShark,按"开始"按钮(android:onClick="doStart"),阻止手机并将其放在桌面上.我去吃午餐或者其他什么,经过600-6000s我可以看到WireShark上的tx错误,echo服务器已经停止接收流量而手机没有响应ping.

手机是2.2,WiFi政策设置为"15米后睡觉".

package Odroid.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;

import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.view.View;
import android.widget.Button;

public class Test extends Activity {
  PowerManager _powerManagement = null;
  PowerManager.WakeLock _wakeLock = null;
  WifiManager.WifiLock _wifiLock = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }

  public void doStart(View v) {
    DoerThreadFake t = …
Run Code Online (Sandbox Code Playgroud)

android wifi

21
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×1

wifi ×1