我必须在广播接收器中同时调用三种不同的方法(比如方法a,b,c)。 我的问题是如何调用这些方法从所有方法中获取数据。
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
getA();
getB();
getC();
}
public void getA(){
//code here
}
public void getB(){
//code here
}
public void getc(){
//code here
}
我必须在数据库(public ip)中发送这些方法的值。
请分享一些相关代码来解决此问题。 感谢。
答案 0 :(得分:2)
在Android中进行线程化的最简单方法是使用AsyncTask。
我不确定你是否愿意将这些方法中的每一种作为论据,或者如果你想从它们那里得到任何回报;但是,让我们假设你没有通过或期待任何事情。
public void onReceive(Context context, Intent intent) {
// start the first method
new AsyncTask<Integer, Integer, Integer>() {
@Override
protected Integer doInBackground(Integer... params) {
getA();
}
}.execute();
// start the second method
new AsyncTask<Integer, Integer, Integer>() {
@Override
protected Integer doInBackground(Integer... params) {
getB();
}
}.execute();
// start the third method
new AsyncTask<Integer, Integer, Integer>() {
@Override
protected Integer doInBackground(Integer... params) {
getC();
}
}.execute();
}
<Integer, Integer, Integer>
参数代表您要传递给任务的参数类型,进度更新类型以及返回的结果类型。
如果您想为每个方法传递一些参数,那么将第一个Integer
更改为您想要传递的参数类型,然后在execute()
方法中添加这些参数。
如果您想开始一项活动并从接收器发送一些数据,您应该使用Intent。
public void getA(Context context, Object dataToPass) {
// replace DestinationActivity with the Activity that you want to start
Intent i = new Intent(context, DestinationActivity.class);
// add the data that you want to pass
i.putExtra("some-constant", dataToPass);
// start the actual activity
context.startActivity(i);
}
在这种情况下,您必须在getA()
方法中将调用更改为onReceive()
,以添加上下文和您要传递的数据。
参考:http://developer.android.com/reference/android/os/AsyncTask.html