网上找了很多方法,试过都没有效果,只好自己摸索。
我的方法是通过广播的方式:如以下代码
Intent broadcastIntent = new Intent("mobile.android.ch10.MYBROADCAST");
broadcastIntent.addCategory("mobile.android.ch10.mycategory");
broadcastIntent.putExtra("boardcastType", "bdMsg_kill");
sendBroadcast(broadcastIntent);
以上是一个进程中的代码,在另一个项目中建一个广播的接收类
public class CustomReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if ("mobile.android.ch10.MYBROADCAST".equals(intent.getAction()))
{
String boardcastType = intent.getStringExtra("boardcastType");
if(boardcastType!=null){
if(boardcastType.equals("bdMsg_kill")){
System.out.println("bdMsg_kill");
if(AndoirdpluginActivity.myMainActivity!=null)
{
AndoirdpluginActivity.myMainActivity.getAndoirdpluginActivity().finish();
}
//System.exit(0);
//android.os.Process.killProcess(android.os.Process.myPid());
}
}
}
}
上面的代码中,用exit(0), 和killProcess都可以退出,但是我的应用中,退出后立即又要重启,用这两个方法,退出很慢,有时还会卡几秒钟,后来用finish()方法,能快速退出。AndoirdpluginActivity.myMainActivity.getAndoirdpluginActivity(),的作用主要是获得主activity的this对象。代码如下:
public class AndoirdpluginActivity extends ActivityGroup{
。。。
public static myAndoirdpluginActivity myMainActivity;
。。。
public class myAndoirdpluginActivity
{
public AndoirdpluginActivity getAndoirdpluginActivity(){
return AndoirdpluginActivity.this;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
。。。
myMainActivity=new myAndoirdpluginActivity();
。。。
}
}