nol*_*man 2 service multithreading android location android-context
我有以下代码:
public class DumpLocationLog extends Thread {
LocationManager lm;
LocationHelper loc;
public void onCreate() {
loc = new LocationHelper();
lm = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE);
}
public void run() {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, loc);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它从远程服务运行,但在行中lm = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE);我得到一个NullPointerException错误,因为它context是null.
我怎样才能获得上下文?getBaseContext()或getApplicationContext()不起作用.
A 默认Thread不会直接访问a Context; 你必须传入它.一个线程也不需要一个onCreate方法(我猜你是手动调用) - 我只是将它改为构造函数.你可以在Thread的构造函数中传入一个Context:
public class DumpLocationLog extends Thread {
LocationManager lm;
LocationHelper loc;
public DumpLocationLog(Context context) {
loc = new LocationHelper();
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
}
public void run() {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, loc);
}
}
Run Code Online (Sandbox Code Playgroud)
new DumpLocationLog(this);如果从内部使用Service(如果Service是Context的子类,那么this可以在这里工作),你可以实例化它.您可以通过调用该start()方法来启动该线程.
| 归档时间: |
|
| 查看次数: |
18586 次 |
| 最近记录: |