我有以下2類如何在Android中處理networkonmainthreadexception?
class CallNetworkMethod extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params) {
if (TwitterUtils.isAuthenticated(prefs)) {
sendTweet();
} else {
Intent i = new Intent(getApplicationContext(), TwPrepareRequestTokenActivity.class);
i.putExtra("tweet_msg",getTweetMsg());
startActivity(i);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
//updateLoginStatus();
loginStatus.setText("Logged into Twitter : " + TwitterUtils.isAuthenticated(prefs));
}
}
==================================== ================
public class TwitterUtils {
static ArrayList<String> friens=null;
public static boolean isAuthenticated(SharedPreferences prefs) {
String token = prefs.getString(OAuth.OAUTH_TOKEN, "");
String secret = prefs.getString(OAuth.OAUTH_TOKEN_SECRET, "");
AccessToken a = new AccessToken(token,secret);
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(TwConstants.CONSUMER_KEY, TwConstants.CONSUMER_SECRET);
twitter.setOAuthAccessToken(a);
try {
**twitter.getAccountSettings();**
return true;
} catch (TwitterException e) {
return false;
}
}
}
我運行此代碼(networkonmainthreadexception)。我調試代碼時得到了異常,並發現其中的異常出來的位置。它是twitter.getAccountSettings();。我認爲這個方法應該在AsynTask中運行,但我不知道如何做到這一點。
有你'刪除loginStatus.setText(後試圖「登錄到Twitter的:」 + TwitterUtils。 isAuthenticated(prefs));'line? –
不,我需要執行那條線。我知道這是點 – user1688181
爲什麼你需要這條線? –