我需要在服务器中的颜色,并将其设置为题材主线程上的网络连接 - 在这种情况下的替代方法?
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的新手,没有例子,它没有多大帮助。
尝试使启动画面,并从闪屏获取颜色,然后开始您的主要活动 –