我在我的android项目中使用Mikrotik Java API
我想要实现的目标是:
ApiConnection
以使用它,例如来自任何活动的con.login()
con.execute()
我是登录表单,提交后,它会发送信息并启动intentService,我会建立连接
@Override
protected void onHandleIntent(Intent intent) {
try {
try {
String host = intent.getStringExtra("host");
String username = intent.getStringExtra("username");
String password = intent.getStringExtra("password");
ApiConnection con = ApiConnection.connect(host);
con.login(username, password);
// Connected
} catch (Exception e) {
// Exception
}
} catch (Exception e) {
// Exception
}
}
我成功地从该intentService建立了连接,但是如果存在连接问题,我无法处理异常,{em> onHandleIntent中也没有Toast消息显示3 EM>
我认为我所做的事情没有任何意义,也没有逻辑。
我怎么能实现这样的目标?
答案 0 :(得分:0)
尝试在获取连接的主活动中将con对象声明为静态,然后根据您的要求在任何地方使用它,
见下面的结构,
在主要活动中
public static ApiConnection con;
获取连接
con = ApiConnection.connect(host);
在主要活动中创建一个获取此连接的方法,如下所示
public static ApiConnection getCon()
{
if(con != null)
return con;
else
return null;
}
现在通过以下代码
在任何活动中使用此对象 ApiConnection con = = MainActivity.getCon();
if(con != null)
{
// Use Your Logic Here
}
答案 1 :(得分:0)
@Amr SubZero我没有api设置,所以我只是创建了这个类来解释你的流程。
import android.util.Log;
/**
* Created by Wasim on 18-06-2016.
*/
public class SingletonApiConnection {
private static final String TAG = "SingletonApiConnection";
private static SingletonApiConnection apiInstance = null;
private SingletonApiConnection() {
}
public SingletonApiConnection(String host) {
apiInstance.connect(host);
Log.d(TAG, "Object Created.");
}
public static SingletonApiConnection getInstance(String host) {
if (null == apiInstance) {
apiInstance = new SingletonApiConnection(host);
}
return apiInstance;
}
}
意图服务
public class NetworkRequestService extends IntentService {
/**
* Creates an IntentService. Invoked by your subclass's constructor.
*
* @param name Used to name the worker thread, important only for debugging.
*/
public NetworkRequestService(String name) {
super(name);
}
@Override
protected void onHandleIntent(Intent intent) {
// get object with host
String host = intent.getStringExtra("host");
SingletonApiConnection connection = SingletonApiConnection.getInstance(host);
String username = intent.getStringExtra("username");
String password = intent.getStringExtra("password");
// now call login
connection.login(username, password);
// now use this at any class it will have loggedin instance b'z it is singleton.
}
}
登录
Intent networkService = new Intent(LoginActivity.this, NetworkRequestService.class);
// add intent parameters here
startService(networkService);