但是您在背景的東西要怎麼丟到前台?
好比如你請郵差幫你寄信,卻沒寫地址!
那不是無功而返嗎?
這次利用Service內去註冊廣播的服務,請Activity接收訊息。
Activity(Button)
Activity(StartService)
Service(While Loop - Broadcast)
Activity( BroadcastReceiver )
MainActivity.java
package com.example.service;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener{
private Button startBtn;
private Button stoptBtn;
private TextView numText;
private MyReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startBtn = (Button) findViewById(R.id.button1);
stoptBtn = (Button) findViewById(R.id.button2);
numText = (TextView) findViewById(R.id.textView1);
startBtn.setOnClickListener(this);
stoptBtn.setOnClickListener(this);
// 註冊接收器
receiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("android.intent.action.test");
this.registerReceiver(receiver,filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 結束背景服務
Intent stopIntent = new Intent(this, Swe.class);
stopService(stopIntent);
// 註銷接收廣播服務
this.unregisterReceiver(receiver);
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.button1:
Intent intent = new Intent(this,Swe.class);
startService(intent);
break;
case R.id.button2:
Intent stopIntent = new Intent(this, Swe.class);
stopService(stopIntent);
break;
}
}
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle=intent.getExtras();
String a=bundle.getString("Swe_sum");
Log.d("ServiceProject","MainActivity Receiver : "+a);
numText.setText(a);
}
}
}
Swe.java
package com.example.service;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class Swe extends Service{
private int sum = 0;
private boolean running = true;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Log.d("ServiceProject","onCreate");
thread.start();
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("ServiceProject","onDestroy");
running = false;
}
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
while(running){
sum++;
Log.d("ServiceProject","ServiceSwe : "+sum);
Intent intent=new Intent();
intent.putExtra("Swe_sum", ""+sum);
intent.setAction("android.intent.action.test");
sendBroadcast(intent);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
running = false;
e.printStackTrace();
}
}
}});
}
記得要註冊 Service 、Receiver
<service android:name="Swe"></service>
<receiver android:name="MainActivity$MyReceiver"></receiver>
歡迎轉載,請註明出處。
沒有留言:
張貼留言