我需要在服務器中的顏色,並將其設置爲題材主線程上的網絡連接 - 在這種情況下的替代方法?
setTheme(colorId);
它需要內部onCreate()
,並在一開始就被設定工作。所以
protected void onCreate(Bundle savedInstanceState) {
getColor();
...
}
public void getColor() {
StrictMode.ThreadPolicy tp = StrictMode.ThreadPolicy.LAX; //force network on main thread
StrictMode.setThreadPolicy(tp);
OkHttpClient client = new OkHttpClient();
okhttp3.Request request = new okhttp3.Request.Builder()
.url("http://myip/color.php")
.build();
try {
okhttp3.Response response = client.newCall(request).execute();
String color = response.body().string();
setTheme(color);
} catch (IOException e) {
e.printStackTrace();
}
}
}
,我強迫在主線程上的網絡連接,因爲如果我添加doInBackground(), on response...
將我onCreate()
和顏色不會被設置後運行:
我這樣做。
這裏我的問題是:
1)這是唯一的方法嗎?
2)我可以在主線程上無強制網絡嗎? 3)我想要一個例子,如果可能的話,不只是:「是的,這是可能的」或「做XYZ」,因爲我是Android的新手,沒有例子,它沒有多大幫助。
嘗試使啓動畫面,並從閃屏獲取顏色,然後開始您的主要活動 –