您的位置:首页 > 其它

Service如何关闭启动自己的Activity

2014-08-22 15:43 1576 查看

Service如何关闭启动自己的Activity  

今天在编写Android程序的时候,遇到这个问题。通过百度和google的搜索结果,总结出以下方法:
方法一:

public class mService extendsService {

   //保存在service中的Activity对象

    privatestatic mActivity m;

   //启动服务

    static voidstartservice(Context c){

       m=(mActivity)c;

       Intent iService=new Intent(c,mService.class);

       iService.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

       c.startActivity(iService);

    }

   //关闭服务

    static voidstopservice(Context c){

       Intent iService=new Intent(c,mService.class);

       iService.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

       c.stopService(iService);

    }

    ……

   //在mService中关闭mActivity

   m.finish();

}

   

public class mActivity extendsActivity {

    // privateMediaPlayer mMPlayer;

   

   @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

       // TODO Auto-generated method stub

       super.onCreate(savedInstanceState);

       ……

       //启动mService

       mService.startservice(mActivity.this);

        ……

       //停止mService

       mService.stopservice(mActivity.this);

       

    }

}

方法二:

主要包括3部分
1.定义application类,这个类可以保存获取activity实例,记得manifest中加入android:name=".MyApp"

public class MyApp extendsApplication{

       private MyServiceActivity myActivity;

      

       public void setInstance(MyServiceActivity instance){

              myActivity = instance;

       }

      

       public MyServiceActivity getInstance(){

              return myActivity;

       }

}
2. 在activity中保存实例     

public class MyServiceActivity extendsActivity {

   

    @Override

    public void onCreate(BundlesavedInstanceState) {

       super.onCreate(savedInstanceState);

       ((MyApp)getApplication()).setInstance(this);

    ……

    }

}
3. 在service中取回实例

public class MyService extendsService {

       MyServiceActivity myActivity;

       @Override

       public void onCreate() {

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: