这是方案,
我想从服务中获取数据到活动
每当服务从服务器获取新数据时,自动调用以下函数(回调)
public void publishArrived(blah, blah) {
//some operation here
}
语境:在我的活动中,我执行登录操作,其成功取决于在publishArrived中到达的上述结果。
先谢谢。
答案 0 :(得分:1)
假设您需要同时启动活动和服务(而不是在服务中接收数据后启动活动),您可以在活动中注册BroadcastReceiver,然后从服务发送一次广播消息你有数据。
在您的活动中注册广播接收器的代码与此类似,但您将定义自己的自定义消息:
https://stackoverflow.com/a/2959290/483708
要从您的服务发送自定义广播,您将使用此广告(取自http://www.vogella.de/articles/AndroidServices/article.html):
Intent intent = new Intent();
intent.setAction("de.vogella.android.mybroadcast");
sendBroadcast(intent);
答案 1 :(得分:0)
这是解决方案。
在onCreate()
方法之前声明一个字符串,但是在类中 - 例如
public static final String pass="com.your.application._something";
在publishArrived
方法中,您可以执行此操作 -
String s="Pass this String";//If you want to pass an string
int id=10;//If you want to pass an integer
Intent i=new Intent(currentactivity.this,NewActivity.class);
i.putExtra(pass, id);//If you want to pass the string use i.putExtra(pass, s);
startActivity(i);
现在您想要捕获此活动提供的数据。 因此,在新活动中,只需提取值,如图所示 -
//this is for getting integer.
int a=getIntent().getExtras().getInt(CurrentActivity.pass);
//this is for getting String
String s=getIntent().getExtras(CurrentActivity.pass);
注1:实际上总是应该传递String,因为它很容易被解析为Integer。
注意2:在各自的位置提供CurrentActivity和NewActivity名称。
希望这有帮助。
在您的情况下,假设登录名为“abc”,密码为“pqr”
然后你可以传递这个
String s=login+"*"+password;
这将导致abc * pqr
现在在NewActivity中只需解析字符串直到得到'*'。按indexOf('*')
获取其索引。此索引之前的值是Login,此后的值将是密码。