java如何在主类构造函数中获取上下文?
我到处寻找,决定在这里写作。当我的应用程序启动时,我正在尝试建立连接。我的问题是,我需要将上下文传递给AsyncTask(或者在构造函数的前面创建ProgressDialog)——但我也需要上下文
最重要的是:我不能将东西从构造函数移动到onCreate,因为每次打开应用程序、返回等时,它都会生成一个新的客户端
问题是,当构造函数被激发时,我还没有上下文
有什么想法吗
已经尝试过:StartConnectionTask(this);
但这是一样的
找到这个:http://briandolhansky.com/blog/2013/7/11/snippets-安卓-async-progress 实现了它,但仍然是一样的上下文为空
public class MainActivity extends AppCompatActivity {
public Client client;
public Button loginButton;
public static String host = "192.168.1.2";
public static int tcp_port = 8888, udp_port = 8889;
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_layout);
}
public MainActivity(){
client = new Client();
client.start();
Network.register(client);
StartConnectionTask s = new StartConnectionTask(MainActivity.this);
s.execute();
}
public class StartConnectionTask extends AsyncTask<Void, Void, Boolean> {
private ProgressDialog conDialog;
public StartConnectionTask(MainActivity activity) {
conDialog = new ProgressDialog(activity);
}
@Override
protected void onPreExecute() {
conDialog.setTitle("Connecting with a server...");
conDialog.setMessage("Connecting with " + host);
conDialog.show();
conDialog.setCancelable(false);
}
# 1 楼答案
正如OP所问,下面是如何重写应用程序类
并在
AndroidManifest.xml
中指定# 2 楼答案
拉胡尔·蒂瓦里的回答就行了。但是,如果您想实现应用程序类以在整个应用程序中获取上下文,请尝试以下方法
公共类应用程序扩展应用程序{
把这个加到你的清单上
# 3 楼答案
活动扩展上下文类。当一个活动启动时,它会在其生命周期中流动,所以活动构造函数不需要您将此构造函数代码放入on create方法中