我做了一个简单的android示例,使用AsyncLoader
读取html并将页面值放在Textfield
上。
以前,它运行良好。现在,我向其中添加了服务,并且发现AsyncLoader失败。 AsyncLoader.onPostExecute
将永远不会执行...
这是代码...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AirCondition = (TextView)findViewById(R.id.air);
AsyncLoader load = new AsyncLoader();
load.execute();
StartService();
}
public class AsyncLoader extends AsyncTask<Void, Void, Boolean> {
protected Boolean doInBackground(Void... params) {
try {
air = CommonMethod.GetAirCondition();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
protected void onPreExecute() {}
protected void onPostExecute(Boolean result) {
if (result) {
AirCondition.setText(air);
}
}
}
这是我声明的服务onStartCommand ...
public int onStartCommand(Intent intent, int flags, int startId){
try{
while(true)
{
Thread.sleep(10000);
new Thread(){
public void run()
{
String result = CommonMethod.GetAirCondition();
if(Integer.parseInt(result.trim()) > 10)
{
Log.i("Allen","fuck");
}
}
}.start();
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
return 0;
}
最佳答案
您的onPostExecute()
和doInBackground()
应该用@override
注释:
@Override
protected void onPostExecute(Boolean result) {
...
您的
onPreExecute()
可以删除,因为默认实现不执行任何操作。