2015-03-02 66 views
0

非主線程啓動活動請看看這個代碼,我在Android每週here針對Android

發現有該文章中的一種方法,並從非UI線程的調用。筆者產生了另一個子線程,並開始一個活動:

private void restoreApp() { 
    // Restart activity 
    Intent i = new Intent(ctx, MyActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    ctx.startActivity(i); 
} 

我的問題是,這怎麼可能給startActivity從非uiThread?我認爲這是沮喪或不可能的。可以嗎?

回答

1

我回顧了startActivityForResult,事實上你可以在非UI線程上使用startActivity。看起來你打電話給startActivity它會在主線程內部運行。請注意,在主線程上執行的AOSP startActivity調用startActivityForResult

public void startActivityForResult(Intent intent, int requestCode, Bundle options) { 
if (mParent == null) { 
    Instrumentation.ActivityResult ar = 
     mInstrumentation.execStartActivity(
      this, mMainThread.getApplicationThread(), mToken, this, 
      intent, requestCode, options); 
}}