use*_*565 1 java android android-asynctask
我试图遍历我的表中的一些记录,并为每个记录,使用值作为参数;
这些都可以完美地完成,但我无法让它们都在AsyncTask中工作.我这里有代码.我知道我可能已经离开了,但是如果有人能给我一个关于我的想法如何消失的推动,我真的很感激.
在第一行
private class FetchWebsiteData extends AsyncTask<Void, String, Void> {
Run Code Online (Sandbox Code Playgroud)
我明白了
Class FetchWebsiteData must either be declared abstract or implement abstract method doInBackground(params...) in 'AsynTask'
Run Code Online (Sandbox Code Playgroud)
作为错误消息并以红色下划线.
private class FetchWebsiteData extends AsyncTask<Void, String, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(summary.this);
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
protected String doInBackground(String urls3, String result3) {
helper = new TaskDBHelper(summary.this);
SQLiteDatabase sqlDB = helper.getReadableDatabase();
Cursor dataCount = sqlDB.rawQuery("select TASK from " + TaskContract.TABLE, null);
ArrayList<String> temp = new ArrayList<String>();
dataCount.moveToFirst();
do {
temp.add(dataCount.getString(0));
} while (dataCount.moveToNext());
dataCount.close();
StringBuilder sb = new StringBuilder();
for (String s : temp)
{
wallBal = s;
//--------------------------------------------
try {
Document document = Jsoup.connect(URL+wallBal).get();
Document doc = Jsoup.parse(document.text());
balance = new Double(doc.text());
helper = new TaskDBHelper(summary.this);
SQLiteDatabase sqlDB2 = helper.getWritableDatabase();
String sql9 = String.format("UPDATE " + TaskContract.TABLE + " SET " + TaskContract.Columns.OLDBAL + " = " + TaskContract.TABLE + "." + TaskContract.Columns.BAL + " WHERE task='" + wallBal + "'");
sqlDB2.execSQL(sql9);
String sql = String.format("UPDATE " + TaskContract.TABLE + " SET " + TaskContract.Columns.BAL + " = " + balance + " WHERE task='" + wallBal + "'");
sqlDB2.execSQL(sql);
Cursor dataCount2 = sqlDB.rawQuery("select " + TaskContract.Columns.OLDBAL + " from " + TaskContract.TABLE + " WHERE " + TaskContract.Columns.TASK + " = '" + wallBal + "'", null);
dataCount2.moveToFirst();
oldbalance = dataCount2.getDouble(0);
if(balance != oldbalance) {
make();
}
mProgressDialog.dismiss();
JSONObject json3 = new JSONObject(result3);
String str = "";
JSONArray articles3 = json3.getJSONArray("data");
str += "articles length = "+json3.getJSONArray("data").length();
str += "\n--------\n";
str += "names: "+articles3.getJSONObject(0).getString("MasternodeIP");
str += "\n--------\n";
MNIP = articles3.getJSONObject(0).getString("MasternodeIP");
Sts = articles3.getJSONObject(0).getString("ActiveCount");
helper = new TaskDBHelper(summary.this);
SQLiteDatabase sqlDB22 = helper.getWritableDatabase();
String sql91 = String.format("UPDATE " + TaskContract.TABLE + " SET " + TaskContract.Columns.IP + " = '" + MNIP + "' WHERE task='" + task + "'");
sqlDB22.execSQL(sql91);
String sql10 = String.format("UPDATE " + TaskContract.TABLE + " SET " + TaskContract.Columns.STATUS + " = '" + Sts + "' WHERE task='" + task + "'");
sqlDB22.execSQL(sql10);
updateUI();
} catch (JSONException | IOException e) {
e.printStackTrace();
}
//-----------------------------------------------------
}
//--------------------------------------------------------------------
//return null;
return GET(urls3);
}
protected void onPostExecute(Void result) {
updateUI();
}
}
Run Code Online (Sandbox Code Playgroud)
改变这个
protected String doInBackground(String urls3, String result3)
Run Code Online (Sandbox Code Playgroud)
至
protected String doInBackground(String... args)
Run Code Online (Sandbox Code Playgroud)
然后在doInBackground函数中声明你的变量
String urls3 = args[0];
String result3 = args[1];
Run Code Online (Sandbox Code Playgroud)
您还需要更正onPostExecute
protected void onPostExecute(String result)
Run Code Online (Sandbox Code Playgroud)
和你的班级声明
private class FetchWebsiteData extends AsyncTask<String, Void, String>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6767 次 |
| 最近记录: |