小弟正在学习android开发,遇到不懂的地方,还请各位大神指教。
当BroadcastReceiver接收到广播后,就调用Activity中的方法,可这样是实例化不了的Activitypublic class MyActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);
}
public void function()
{
//方法
//
//
}
}BroadcastReceiverpublic class SMSBroadcastReceiver extends BroadcastReceiver {
DBHelper db; public void onReceive(Context context, Intent intent) {     MyActivity ma=new MyActivity ();
     ma.function();
}
}

解决方案 »

  1.   

    不是调用Activity,只是调用里面的方法
      

  2.   

    在SMSBroadcastReceiver里面发送广播到MyActivity 中接受
      

  3.   

    我尝试了一下这样,可这样只会重新打开Activity,我只想在function里实现ListView的更新             Intent intent =new Intent(context,MyActivity.class);
                 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                 context.startActivity(intent2);
      

  4.   

    你如果不想打开Activity,就直接把这个function写到BroadcastReceiver里面的onReceive不就可以了吗?化繁为简。
      

  5.   

    因为function里有对控件的操作,不能放在BroadcastReceiver里的
      

  6.   

    如果Activity已打开过,而不想重新打开,有几种方法:1、在AndroidManifest.xml里面设置Activity  android:launchMode="singleInstance"就不会重新打开Activity,然后用intent的方式,在Activity里面添加一个
    @Override
    protected void onNewIntent(Intent intent) 
    {
       对接收到的intent进行处理
    }2、直接在Activity里面注册一个SMSBroadcastReceiver接收器3、或者在Activity里面注册自定义Receiver,由SMSBroadcastReceiver发送广播过来。条条大道通罗马,方法很多的,找一种适合的方法吧。