java - 需要帮助调试我的 android-java 代码

标签 java android eclipse

Log cat 显示“运行时异常 - 无法在未调用 Looper.prepare 的线程内创建处理程序?我想在固定的时间间隔后通过短信将手机的位置更新发送到其他手机。请帮忙。建议还有省电的方法

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 et1 = (EditText)findViewById(R.id.editText1);
 et2 = (EditText)findViewById(R.id.editText2);
 b1  = (Button)findViewById(R.id.button1 );
 t1 = new Timer();
 t2 = new Timer();
 lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
 listener = new LocationListener() {

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
        SmsManager sm = SmsManager.getDefault();
         String message = String.format(
                    "New Location \n Longitude: %1$s \n Latitude: %2$s",
                    location.getLongitude(), location.getLatitude()             );
        String number = "5556";
        sm.sendTextMessage(number,null,message,null,null);
    }
};

在每个固定时间间隔后安排请求更新

t1.scheduleAtFixedRate(new TimerTask() {

    @Override
    public void run() {
        // TODO Auto-generated method stub
        lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, listener,null);
    }
},0,300000);

}

}

最佳答案

TimerTask中并不清楚文档,但我怀疑每个任务都在自己的线程上运行。另外,LocationManager.requestSingleUpdate 的文档您正在使用的调用说“如果 Looper 为 null,则将在主线程上调用回调”,但我怀疑这是错误的,因为它与具有替代签名的签名不一致,后者表示“如果 Looper 为 null,则回调将在当前线程上调用”。如果后者是正确的,那就可以解释你的问题,因为你正在打电话 requestSingleUpdate在您的TimerTask内线程,没有 Looper .

也许使用 getMainLooper 的结果而不是null最后一个参数为 requestSingleUpdate .

关于java - 需要帮助调试我的 android-java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121591/

相关文章:

java - 在 SCons 中构建项目时如何指定 java 标志?

android - 无法使用 MPAndroidChart 库优化折线图

eclipse - 无法发布 web 应用程序 : SpringSource Tool Suite problem?

java - 更新 Apache POI 4.0 后 - 无法识别属性 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit'

java - 我想在单击按钮时停止某个功能

java.lang.NoClassDefFoundError : (wrong name )

使用 VectorDrawable 的 Android Studio 错误(新的 Support 23.2.0 库)

android - FDT5 和端口 7935

java - Eclipse 自动完成参数类型强调

java - Eclipse 自动部署不包括 native 库