【发布时间】:2020-08-01 03:21:13
【问题描述】:
我已经创建了一些代码行,如果连接设置没有任何异常,它们应该切换到下一个活动。但如果有一些例外,它应该会“错误!”干杯,而不是去下一个活动。
Connection 类中的布尔标志运行良好:如果服务器关闭,应用程序会说“错误!”,如果打开,则不会。但是主类中的相同标志 (con.flag) 不能正常工作,它看起来总是 false。应用程序总是切换到下一个活动,是否烤面包,具体取决于服务器状态。我的代码有什么问题?我想关于 AsyncTask 类的字段初始化有些我不知道。
所以,这是我的代码:
public class Connection extends AsyncTask<Void, Void, String> {
Context mContext;
public Connection(Context context){
this.mContext = context;
}
static String value;
boolean flag = false;
@Override
protected String doInBackground(Void... arg0) {
try {
Jedis jedis = new Jedis("192.168.0.120", 6381);
String name = jedis.ping();
value = name;
} catch (Exception e){
flag = true;
}
return null;
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (flag) {
Toast toast = Toast.makeText(mContext,
"Error!", Toast.LENGTH_LONG);
toast.show();
}
}
}
public class MainActivity extends AppCompatActivity {
Button click;
Context maincontext = this;
public void goTo2ndActivity(){
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
click = (Button)findViewById(R.id.button);
click.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Connection con = new Connection(maincontext);
con.execute();
if (!con.flag){
goTo2ndActivity();
}
}
});
}
}
【问题讨论】:
标签: java android android-asynctask initialization visibility