在数据库中同时调用三个方法

时间:2013-12-16 05:50:41

标签: android broadcastreceiver

我必须在广播接收器中同时调用三种不同的方法(比如方法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)中发送这些方法的值。

请分享一些相关代码来解决此问题。 感谢。

1 个答案:

答案 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

相关问题