그녀는 트위터에서 사용자 트윗을 retie하기위한 내 안드로이드 코드입니다. 나는 lowerapi 버전에서 이것을 성공적으로 수행했다. asynctask에서 동일한 작업을 수행하여 메인 스레드 예외에서 네트워크를 피할 수 있습니까? 내가 컴파일을 확인하지 않지만 이와 유사한네트워크 작업을 별도의 스레드에서 실행하여 3보다 큰 android api의 크래시를 피하십시오.
public class MainActivity extends ActionBarActivity {
public Bitmap placeholder;
Context mContext;
Twitter mTwitter;
ListView mListView;
static String TWITTER_CONSUMER_KEY = "GHGHGJHghghgjhggM";
static String TWITTER_CONSUMER_SECRET = "jkhKJHjhkjhkHkjhHk38YQXUs";
static String TWITTER_ACCESS_TOKEN = "343434343434-fAZAMIuwAAKlXgby2rXeyvAnhKJHJHJHjhjHJKHjhjhjhhhJ";
static String TWITTER_TOKEN_SECRET = "JBKJkjhJHJJHHFDJBJbhjvghdgsxs";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.ListViewId);
mContext = getApplicationContext();
mTwitter = getTwitter();
ArrayList<Tweet> tweets = showTweetsAbout("IntelAndroid");
ArrayAdapter<Tweet> adapter = new TweetItemAdapter(this, R.layout.listitem, tweets);
mListView.setAdapter(adapter);
}
private Twitter getTwitter() {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(TWITTER_CONSUMER_KEY);
cb.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET);
cb.setOAuthAccessToken(TWITTER_ACCESS_TOKEN);
cb.setOAuthAccessTokenSecret(TWITTER_TOKEN_SECRET);
cb.setUseSSL(true);
//cb.setJSONStoreEnabled(true);
return new TwitterFactory(cb.build()).getInstance();
}
private ArrayList<Tweet> showTweetsAbout(String queryString) {
ArrayList<Tweet> tweets = new ArrayList<Tweet>();
List<Status> statuses = new ArrayList<Status>();
try {
statuses = mTwitter.search(new Query(queryString)).getTweets();
for (Status s : statuses) {
Tweet tweet = onStatus(s);
tweets.add(tweet);
}
} catch (TwitterException e) {
e.printStackTrace();
}
return tweets;
}
사용하는 경우 기본 규칙을 점검합니다'네트워크 액세스 AsyncTask'는 onPostExecute''에서 주요 스레드에 아무것도를 업데이트 할 필요가 doInBackground''에 네트워크 액세스 모든 것을 아무것도 넣어하는 것입니다 . 주 스레드 구성 요소를 주기적으로 업데이트해야하는 경우'onProgressUpdate'와 함께'publishProgress'를 사용할 수도 있습니다. – Squonk