在我的应用程序的一个活动中,我动态地创建了一堆编辑文本字段,然后使用sharedpreferences中的一些文本设置它们。我意识到这对主线程来说有点多处理,这就是为什么在加载时应用程序有一些滞后的原因。我对线程的概念很陌生,所以我想知道最好的方法是将字符串从sharedpreferences加载到另一个线程,然后在此期间只显示一个加载栏(或类似的)(在主线程中我猜测)。请详细解释,因为线程对我来说是新的。
此外,如果有任何教程指向我正确的方向,他们也会有用。提前致谢。
答案 0 :(得分:1)
虽然只有主线程可以对UI进行更改,但是AsyncTask类可以让你在另一个线程上完成所有其他工作,然后在准备放入主线程时将其推送到主线程用户界面。
答案 1 :(得分:1)
AsyncTask是您所需要的。 创建一个扩展AsyncTask的类 在doInBackground中做你繁重的工作() 例如:
Class Example extends AsyncTask{
@Override
protected void doInBackground(Object... args){
//do ur stuff
}
@Override
protected void onPostExecute(Object arg){
//do what you wanna do after doInBackground
}
}
通过新的例子()调用你的任务.execute();
答案 2 :(得分:0)
你可以这样:只是为了指导你
final ProgressDialog pd = ProgressDialog.show(context, "Title", "Loading");
new Thread(new Runnable()
{
@Override
public void run()
{
//get data from shared preferences
runOnUiThread(new Runnable()
{
@Override
public void run()
{
pd.dismiss();
//set that text to your dynamic textview
}
});
}
}).start();