0
我有一個與Android小部件(主屏幕上的那些)有關的問題 我試圖創建一個小部件,它將定期更新其內容。小部件的服務內部網絡調用
我使用一個被調用來執行該操作的服務。 當我嘗試在這個服務中進行基本的網絡調用(GET)時,我遇到了NetworkOnMainThread異常。
我知道這個例外是什麼,但我認爲在Android的服務是在一個單獨的線程。所以我只是錯了...
所以,爲了做到這一點,我做了一個AsyncTask,但我不滿意我的代碼,我只是認爲我所做的不是一個好用法。 打電話給任何人告訴我,如果我的想法是正確的?
這裏是我的服務內容:
public class ServiceUpdate extends Service
{
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
new AsyncTask<Void, Void, Void>()
{
String res = null;
@Override
protected Void doInBackground(Void... params)
{
// Getting something from the WWW
res = Network.getStringFromWS("http://wordpress.org/plugins/about/readme.txt");
return null;
}
@Override
protected void onPostExecute(Void result)
{
// Substring for test
res = res.substring(0, 100);
RemoteViews remoteViews = new RemoteViews(getApplicationContext().getPackageName(),
R.layout.widget_layout);
remoteViews.setTextViewText(R.id.tvTime, res);
ComponentName thiswidget = new ComponentName(getApplicationContext(), TimeWidgetProvider.class);
AppWidgetManager manager = AppWidgetManager.getInstance(getApplicationContext());
manager.updateAppWidget(thiswidget, remoteViews);
super.onPostExecute(result);
}
}.execute();
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent arg0)
{
return null;
}
}
謝謝大家對你的觀點!