Java I';我试图用一个方法将值存储到先前创建的对象
所以我对java和android还是比较陌生的。我试图找出是否有一种方法可以将SomeClass方法内部的2个值存储到对象Java I';我试图用一个方法将值存储到先前创建的对象,java,android,class,scope,external,Java,Android,Class,Scope,External,所以我对java和android还是比较陌生的。我试图找出是否有一种方法可以将SomeClass方法内部的2个值存储到对象 public class MainClass extends ...{ Output outputObject = new Output(); @Override protected void onCreate(Bundle savedInstanceState) { SomeClass classTask = new Som
public class MainClass extends ...{
Output outputObject = new Output();
@Override
protected void onCreate(Bundle savedInstanceState) {
SomeClass classTask = new SomeClass(params) {
@Override
public void processFinish(String output) {
outputObject.setVarOutput(output);
}
}
classTask1.execute(link);
SomeClass classTask2 = new SomeClass(params) {
@Override
public void processFinish(String output) {
outputObject.setVar2Output(output);
}
}
classTask2.execute(link2);
// gather the outputObject values
//for example
result = outputObject.getVarOutput() + getVar2Output();
}
});
我试过几件事都没用。我不知道该找什么或调查什么
如果有一种方法可以将SomeClass方法内部的2个值存储到对象中
public class MainClass extends ...{
Output outputObject = new Output();
@Override
protected void onCreate(Bundle savedInstanceState) {
SomeClass classTask = new SomeClass(params) {
@Override
public void processFinish(String output) {
outputObject.setVarOutput(output);
}
}
classTask1.execute(link);
SomeClass classTask2 = new SomeClass(params) {
@Override
public void processFinish(String output) {
outputObject.setVar2Output(output);
}
}
classTask2.execute(link2);
// gather the outputObject values
//for example
result = outputObject.getVarOutput() + getVar2Output();
}
});
有
很难说为什么您提供的代码不适合您,因为您使用的名称非常抽象。我可以假定
execute()
将进行一些计算,可能在不同的线程上。如果是这种情况,那么您希望避免从不同线程接触同一对象
如果我不知道你想做什么,我就不能给出更好的建议
如果有一种方法可以将SomeClass方法内部的2个值存储到对象中
public class MainClass extends ...{
Output outputObject = new Output();
@Override
protected void onCreate(Bundle savedInstanceState) {
SomeClass classTask = new SomeClass(params) {
@Override
public void processFinish(String output) {
outputObject.setVarOutput(output);
}
}
classTask1.execute(link);
SomeClass classTask2 = new SomeClass(params) {
@Override
public void processFinish(String output) {
outputObject.setVar2Output(output);
}
}
classTask2.execute(link2);
// gather the outputObject values
//for example
result = outputObject.getVarOutput() + getVar2Output();
}
});
有
很难说为什么您提供的代码不适合您,因为您使用的名称非常抽象。我可以假定
execute()
将进行一些计算,可能在不同的线程上。如果是这种情况,那么您希望避免从不同线程接触同一对象
如果不进一步了解您要做的事情,我就无法给出更好的建议。我的第一个想法是execute()没有按预期的路径运行,processFinish()也没有按预期的方式调用。如果看不到某个类的详细信息,就无法确定 其次,从长远来看,这不是线程安全的,因为同时调用onCreate()将导致两个线程同时尝试更新对象。我不能保证你会得到什么,这是一个比赛条件,但你一提到数据库,我的耳朵就振作起来 现在,如果将outputObject存储在线程本地存储中,那么至少并发性不是问题,但是如果它不是与填充对象相同的线程读取,那么也不会起作用。当然,您可以在outputObject上进行同步,因此您可以在失去可伸缩性的情况下获得并发性
对我来说,最好的解决方案是在每次onCreate()调用中创建一个唯一的outputObject,并找出一种方法将数据库传送到外部世界(这可能是不必要的,因为您正在将数据转储到外部世界)我的第一个想法是execute()不会沿着预期的路径运行,而processFinish()未按预期调用。如果看不到某个类的详细信息,就无法确定 其次,从长远来看,这不是线程安全的,因为同时调用onCreate()将导致两个线程同时尝试更新对象。我不能保证你会得到什么,这是一个比赛条件,但你一提到数据库,我的耳朵就振作起来 现在,如果将outputObject存储在线程本地存储中,那么至少并发性不是问题,但是如果它不是与填充对象相同的线程读取,那么也不会起作用。当然,您可以在outputObject上进行同步,因此您可以在失去可伸缩性的情况下获得并发性
对我来说,最好的解决方案是每次onCreate()调用创建一个唯一的outputObject,并找出一种方法将数据库传送到外部世界(这可能是不必要的,因为您正在将数据转储到外部世界)您所说的“收集outputObject”是什么意思?什么是SomeClass?你到底想做什么?你说的“收集输出对象”是什么意思?什么是SomeClass?该项目包括将android应用程序连接到mysql数据库。SomeClass是为从数据库中提取而构建的类。我通过processFinish获得了我想要的结果,但我还没有找到如何在类调用之外获得它。我已尝试将调用移动到另一个为output设计的类调用。execute是执行异步类,我相信如果是这样,那么您的结果将不会达到预期效果,因为计算可能尚未完成,因此不会调用processFinish()。您必须找到另一种方法来执行计算并获得结果。查看AsyncTask文档,了解如何使用它。感谢您的帮助,我今天早上醒来时脑子里想着解决方案。今天早上我意识到我可以将值存储在sqlite中。该项目包括将android应用程序连接到mysql数据库。SomeClass是为从数据库中提取而构建的类。我通过processFinish获得了我想要的结果,但我还没有找到如何在类调用之外获得它。我已尝试将调用移动到另一个为output设计的类调用。execute是执行异步类,我相信如果是这样,那么您的结果将不会达到预期效果,因为计算可能尚未完成,因此不会调用processFinish()。您必须找到另一种方法来执行计算并获得结果。查看AsyncTask文档,了解如何使用它。感谢您的帮助,我今天早上醒来时脑子里想着解决方案。今天早上我意识到我可以将值存储在sqlite中。它将解决这个问题,然后解决其他一些问题。