必须在不同的活动中调用单例 socketIO 类?
Posted
技术标签:
【中文标题】必须在不同的活动中调用单例 socketIO 类?【英文标题】:Have to call singleton socketIO class in different activities? 【发布时间】:2014-09-26 05:52:03 【问题描述】:我正在使用 gottox-socket.io 库进行套接字编程。我为套接字创建了单例类。我可以在主要活动中调用它,但我无法在其他活动中调用它......这是我的单例类......
public class MainActivity extends Activity
EditText uname, passwd;
Button login;
JSONObject json;
SocketIOClient socket;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
socket = new SocketIOClient();
try
SocketIOClient.initInstance();
catch (MalformedURLException e1)
// TODO Auto-generated catch block
e1.printStackTrace();
json = new JSONObject();
uname = (EditText) findViewById(R.id.unameED);
passwd = (EditText) findViewById(R.id.passwdED);
login = (Button) findViewById(R.id.loginButton);
login.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
try
json.put("username", uname.getText().toString().trim());
json.put("password", passwd.getText().toString().trim());
//request send to server
SocketIOClient.emit("login_request", json);
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
);
我还使用抽象类来获取从单例类到活动的 json 响应。这是我的抽象类
public abstract class ResponseHandler
private Context context;
public abstract void execute (JSONObject jsonObject) throws JSONException;
public ResponseHandler (Context ctx)
this.context = ctx;
public void handleObject(JSONObject jsonObject) throws Exception
execute(jsonObject);
【问题讨论】:
【参考方案1】:您是否考虑过在帮助程序包(例如 com.project.name.helpers)中创建一个 GlobalClass 并从那里调用它。喜欢
public class GlobalClass extends Activity
public static SocketIOClient socket = new SocketIOClient();
然后您可以在导入 GlobalClass 后从您的活动中调用它,因为它是一个静态的并且已经创建的类,例如:
import com.project.name.helpers;
public SomeActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
try
GlobalClass.socket.initInstance();
catch
【讨论】:
以上是关于必须在不同的活动中调用单例 socketIO 类?的主要内容,如果未能解决你的问题,请参考以下文章