这是在MyHttpsClient.java中获取对象的函数。
public static MyHttpsClient getClient(Context context, OnHttpsResult resultListener) throws Exception {
Log.i("TAG","---------------------------" + context.getClass().getName() + " getClient!--------------------------------");
for(String c : contextNames){
if(c == context.getClass().getName()){
throw new Exception("Can not be initialized twice in the same class");
}
}
contextNames.add(context.getClass().getName());
return new MyHttpsClient(context, resultListener);
}
我这样在Login.kt中初始化它:
object MyHttpsListener : MyHttpsClient.OnHttpsResult{
override fun OnResult(jsonObject: JSONObject?) {
when(workid){
0 -> {
var status = jsonObject?.getInt("status")
if(status == 1){
instance.startActivity(Intent(instance, MainActivity::class.java))
}
else{
Toast.makeText(instance, "Incorrect email or password!", Toast.LENGTH_LONG).show()
}
instance.pb_login.visibility = View.GONE
}
}
}
}
var client = MyHttpsClient.getClient(this, MyHttpsListener)
运行应用程序后,我发现“客户端”名为 “ getClient()”两次,因此应用程序崩溃了。 最后,我以这种方式解决了这个问题:
lateinit var client: MyHttpsClient
然后在onCreate中初始化“客户端”
override fun onCreate(savedInstanceState: Bundle?) {
...
client = MyHttpsClient.getClient(this, MyHttpsListener)
...
}
但是我不知道为什么会这样。我期待有人能帮助我。
答案 0 :(得分:0)
如果您需要创建一个圆锥形((".*?")|((?<group>\b([A-z*]+))-)
),而又不用看已经建立的连接,则可以为同一个圆锥形,实际上是同一个对象创建多个实例
最好的方法是寻找singleton pattern,这是限制连接数和实例数的好方法。
答案 1 :(得分:0)
非常感谢您抽出宝贵时间检查我的问题。我是第一次访问stackoverflow。最终我发现了我的问题,我在顶部错误地初始化了它。下次我将显示完整的代码。
private var instance : Login = Login()
class Login : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {