温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在非Activity中启动、绑定Service(服务)

发布时间:2020-04-13 21:00:56 来源:网络 阅读:3056 作者:九界冰荒 栏目:开发技术

做Android开发的都知道,启动或绑定服务的语句是startService、bindService,可是这两个方法一般都只能在Activity中使用,也就是用Activity才能“.”的出这方法。那如何在非Activity中开始、绑定服务呢?

以Fragment为例:

一个MyFragment类是继承Fragment,他不是Activity类型。但是,一个非Activity的类总是和Activity类有关联的,需要在Activity中调用非Activity中的参数、方法之类,这就给了我们在非Activity类中调用startService、bindService的机会。即将Activity类名这个参数传到非Activity中,然后调用方法启动服务。

如在Activity中调用MyFragment的时候:

FragmentManager fragmentMgr = getSupportFragmentManager();

FragmentTransaction ft = fragmentMgr.beginTransaction();

MyFragment fragment = new MyFragment(this); 在这一句里加一个参数

ft.add(R.id.main_tab1_bofang, fragment );

ft.commit();

然后,我们在MyFragment中创建一个以Activity为参数类型的构造方法:

public MyFragment(Activity Activity) {

Log.e("onCreateView", "准备绑定服务");

Intent service=new Intent(Activity.getApplicationContext(),MusicService.class);

Activity.getApplicationContext().bindService(service, conn, Context.BIND_AUTO_CREATE);

}

注意事项:在一些类中,我们不能直接使用bindService这个方法,得通过Activity.getApplicationContext()来使用,如在TabActivity类中。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI