【问题标题】:startService from class that does not extend Activity来自不扩展 Activity 的类的 startService
【发布时间】:2012-12-02 15:46:14
【问题描述】:

我创建了一个扩展 IntentService 的类,我想从一个不是 Activity 的类启动服务,因此我无权访问 Context 对象。我在文档或网络中找不到这样的示例。有可能吗?

【问题讨论】:

    标签: android android-activity service android-context


    【解决方案1】:

    您需要将当前 Activity 上下文传递给非 Activity 类,以便从非 Activity 类启动服务:

    public class NonActivity {
      public Context context;
    
      public NonActivity(Context context){
        this.context=context;
      }
    
      public void startServicefromNonActivity(){
         Intent intent=new Intent(context,yourIntentService.class);
         context.startService(intent);
      }
    }
    

    并将当前上下文传递为:

    public class AppActivity extends Activity {
        NonActivity nonactiityobj;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
                     nonactiityobj=new NonActivity(CuttentActivity.this);
                     //start service here
                     nonactiityobj.startServicefromNonActivity();
        }
    }
    

    【讨论】:

      【解决方案2】:

      使用此代码启动和停止服务

      public class MyService {
      
      Context context ;
      
      public MyService(Context cont) {
          this.context = context ;
      }
      
      public void StartMyService()
      {
          Intent i = new Intent(context,YourService.class);
          context.startService(i);
      }
      public void StopMyService()
      {
          Intent i = new Intent(context,YourService.class);
          context.stopService(i);
      }
      }
      

      这只是创建这个类的对象

        MyService mySevice ;
        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myService = new MyService(this);
        //For Startting Service
        myService.StartMyService();
      
        //For Stopping Service
        myService.StopMyService();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多