-3
我正在接收來自服務器的郵件,當收到郵件時顯示進度對話框,當我收到對話框關閉的所有郵件時,我無法訪問我想要顯示的列表視圖郵件,它給了我例外,這裏是代碼。Asynctask#1執行doInBackground()時發生錯誤
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
pd = new ProgressDialog(Inb.this);
pd.setTitle("Please wait..");
pd.setMessage("Getting mails...");
pd.setCancelable(false);
pd.setIndeterminate(true);
pd.show();
}
@Override
protected Void doInBackground(Void... arg0) {
//Do something...
try {
publishProgress(arg0);
adopter=new List(Inb.this,getMessages());
} catch (MessagingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
list.setAdapter(adopter);
return null;
}
@Override
protected void onPostExecute(Void result) {
pd.dismiss();
}
};
task.execute();
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
list=(ListView)findViewById(R.id.list);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Intent in=new Intent(Inb.this,EmailView.class);
Globals.message=messageList.get(arg2);
/// in.putExtra("messagedetail",messageList.get(arg2));
startActivity(in);
}
});}
public ArrayList<Message> getMessages() throws MessagingException,IOException{
Folder folder = null;
Store store = null;
String usname="";
String passw="";
try {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
session.setDebug(true);
store = session.getStore("imaps");
//For Hotmail Mailbox inbox messages
//store.connect("imap-mail.outlook.com",emaill, pww);
//For Yahoo Mailbox inbox messages
//store.connect("imap.mail.yahoo.com",emaill, pww);
//For Google Mailbox Inbox messages
store.connect("imap.gmail.com",usname, passw);
folder = store.getFolder("INBOX");
/* Others GMail folders :
* [Gmail]/All Mail This folder contains all of your Gmail messages.
* [Gmail]/Drafts Your drafts.
* [Gmail]/Sent Mail Messages you sent to other people.
* [Gmail]/Spam Messages marked as spam.
* [Gmail]/Starred Starred messages.
* [Gmail]/Trash Messages deleted from Gmail.
*/
folder.open(Folder.READ_WRITE);
messageList.clear();
int n=folder.getMessageCount();
for(int i=n-1,j=1;j!=20;j++,i--)
{
Message msg= folder.getMessage(i);
msg.getSubject();
messageList.add(msg);
}
return messageList;
}
finally {
if (folder != null && folder.isOpen()) { folder.close(true); }
if (store != null && store.isConnected()) { store.close(); }
}
,這是我的日誌
12-20 21:37:58.551:E/AndroidRuntime(1568):FATAL EXCEPTION: AsyncTask #1
12-20 21:37:58.551:E/AndroidRuntime(1568):Process: com.minio, PID: 1568
12-20 21:37:58.551:E/AndroidRuntime(1568):java.lang.RuntimeException:An error occured while executing doInBackground()
12-20 21:37:58.551android.os.AsyncTask$3.done(AsyncTask.java:300)
12-20 21:37:58.551:E/AndroidRuntime(1568):atjava.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
21:37:58.551:E/AndroidRuntime(1568):atjava.util.concurrent.FutureTask.setException(FutureTask.java:222)
12-20 21:37:58.551: E/AndroidRuntime(1568): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
12-20 21:37:58.551: E/AndroidRuntime(1568): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
12-20 21:37:58.551: E/AndroidRuntime(1568): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
12-20 21:37:58.551: E/AndroidRuntime(1568): at java.lang.Thread.run(Thread.java:818)
12-20 21:37:58.551: E/AndroidRuntime(1568): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7062)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewRootImpl.focusableViewAvailable(ViewRootImpl.java:3118)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.ViewGroup.focusableViewAvailable(ViewGroup.java:698)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.View.setFlags(View.java:10482)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.view.View.setFocusableInTouchMode(View.java:7172)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.widget.AdapterView.checkFocus(AdapterView.java:915)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.widget.ListView.setAdapter(ListView.java:503)
12-20 21:37:58.551: E/AndroidRuntime(1568): at com.minio.Inb$1.doInBackground(Inb.java:85)
12-20 21:37:58.551: E/AndroidRuntime(1568): at com.minio.Inb$1.doInBackground(Inb.java:1)
12-20 21:37:58.551: E/AndroidRuntime(1568): at android.os.AsyncTask$2.call(AsyncTask.java:288)
12-20 21:37:58.551: E/AndroidRuntime(1568): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-20 21:37:58.551: E/AndroidRuntime(1568): ... 4 more
12-20 21:37:59.621: E/OpenGLRenderer(1568): SFEffectCache:clear(), mSize = 0
12-20 21:37:59.651: E/WindowManager(1568): android.view.WindowLeaked: Activity com.minio.Inbox has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{e11b090 V.E..... R......D 0,0-1002,486} that was originally added here
12-20 21:37:59.651: E/WindowManager(1568): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:457)
12-20 21:37:59.651: E/WindowManager(1568): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:277)
12-20 21:37:59.651: E/WindowManager(1568): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.Dialog.show(Dialog.java:312)
12-20 21:37:59.651: E/WindowManager(1568): at com.minio.Inb$1.onPreExecute(Inb.java:67)
12-20 21:37:59.651: E/WindowManager(1568): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
12-20 21:37:59.651: E/WindowManager(1568): at android.os.AsyncTask.execute(AsyncTask.java:535)
12-20 21:37:59.651: E/WindowManager(1568): at com.minio.Inb.onCreate(Inb.java:99)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.Activity.performCreate(Activity.java:6221)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2404)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
12-20 21:37:59.651: E/WindowManager(1568): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:769)
12-20 21:37:59.651: E/WindowManager(1568): at android.widget.TabHost.setCurrentTab(TabHost.java:428)
12-20 21:37:59.651: E/WindowManager(1568): at android.widget.TabHost.addTab(TabHost.java:255)
12-20 21:37:59.651: E/WindowManager(1568): at com.minio.Inbox.onCreate(Inbox.java:76)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.Activity.performCreate(Activity.java:6221)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.ActivityThread.access$900(ActivityThread.java:172)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)
12-20 21:37:59.651: E/WindowManager(1568): at android.os.Handler.dispatchMessage(Handler.java:102)
12-20 21:37:59.651: E/WindowManager(1568): at android.os.Looper.loop(Looper.java:145)
12-20 21:37:59.651: E/WindowManager(1568): at android.app.ActivityThread.main(ActivityThread.java:5832)
12-20 21:37:59.651: E/WindowManager(1568): at java.lang.reflect.Method.invoke(Native Method)
12-20 21:37:59.651: E/WindowManager(1568): at java.lang.reflect.Method.invoke(Method.java:372)
12-20 21:37:59.651: E/WindowManager(1568): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
12-20 21:37:59.651: E/WindowManager(1568): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
非常感謝解決:) –