Android通过广播接收者调用服务(service)内方法

来源:互联网 发布:url短网址生成 java 编辑:程序博客网 时间:2024/06/05 11:54
摘要: Android通过广播接收者调用服务内方法 以及利用代码注册广播接收器(4大组件中唯一可以使用代码声明的组件(activity receiver provider service))


服务;

package com.pas.callmethod;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.IBinder;import android.widget.Toast;public class MyService extends Service{private MyReciver receiver;@Overridepublic void onCreate(){//采用代码方式注册广播接收者receiver=new MyReciver();IntentFilter filter=new IntentFilter();filter.addAction("com.pas.call");registerReceiver(receiver, filter);super.onCreate();}@Overridepublic void onDestroy(){unregisterReceiver(receiver);receiver=null;super.onDestroy();}@Overridepublic IBinder onBind(Intent arg0){return null;}private void method_inservice(){Toast.makeText(getApplicationContext(), "我的服务的方法……", Toast.LENGTH_SHORT).show();}private class MyReciver extends BroadcastReceiver{@Overridepublic void onReceive(Context arg0, Intent arg1){System.out.println("内部接收者");method_inservice();}}}


活动:

package com.pas.callmethod;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;public class MainActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent=new Intent(this,MyService.class);startService(intent);}@Overridepublic boolean onCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void call(View v){//发送自定义广播Intent intent=new Intent();intent.setAction("com.pas.call");sendBroadcast(intent);}}

https://my.oschina.net/u/1246663/blog/199840


0 0
原创粉丝点击