Android Service向Activity传参数和数据

来源:互联网 发布:问卷调查数据怎么分析 编辑:程序博客网 时间:2024/04/29 11:20

作为Android开发人员来说,Activity 向Service传数据很容易,用Intent跳转的时候携带数据,但是Service向Activity传数据对于刚接触可能相对有点难度,所以,此篇博客记录下Service向Activity用广播传值

Android中Service向Activity传值有三种,分别是 用广播、Service回调、aidl,这是我知道的,如果还有其他方法,我们一块学习。今天先介绍用广播传值的,不多说,上代码!

1、MainActivity.java

public class MainActivity extends AppCompatActivity {    private TextView textView=null;    private MyReceiver receiver=null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView=(TextView)findViewById(R.id.tv);        //启动服务        startService(new Intent(MainActivity.this, MyService.class));        //注册广播接收器        receiver=new MyReceiver();        IntentFilter filter=new IntentFilter();        filter.addAction("com.project.moli.demobroad.MyService");        MainActivity.this.registerReceiver(receiver,filter);    }    @Override    protected void onDestroy() {        //结束服务        stopService(new Intent(MainActivity.this, MyService.class));        super.onDestroy();    }    public class MyReceiver extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            Bundle bundle=intent.getExtras();            int count=bundle.getInt("count");            textView.setText(count+"");        }    }}

2、MyService.java

public class MyService extends Service {   public MyService() {    }    private int count = 0;    private boolean tag=false;    @Override    public void onCreate() {        super.onCreate();        new Thread(new Runnable() {            @Override            public void run() {                while (!tag) {                    try {                        Thread.sleep(1000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                    count++;                    Log.v("MyService", "Count is " + count);                    //发送广播                    Intent intent=new Intent();                    intent.putExtra("count", count);                    intent.setAction("com.project.moli.demobroad.MyService");                    sendBroadcast(intent);                }            }        }).start();    }    @Override    public IBinder onBind(Intent intent) {        return null;    }    @Override    public void onDestroy() {        super.onDestroy();        count=0;        tag = true;        Log.v("MyService", "on destroy");    }}

3、AndroidManifests.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.project.moli.demobroad">    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <service            android:name=".MyService"            android:enabled="true"            android:exported="true"></service>    </application></manifest>

4、附上图片
这里写图片描述

今天先说一种,后面我会继续更新其他的方法!我基本上都会附上全部代码,如果对你有帮助,请关注!

附上博主QQ :1687973451

共同学习交流

1 0
原创粉丝点击