package com.example.lenovo.testtwo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.support.annotation.Nullable; import android.view.View; import android.widget.Button; import android.widget.TextView; public class otherActivity extends Activity { static double num; static TextView textView; static Handler handler=new Handler(); private Button btn=null; private Button btn1=null; protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ser); initView(); } public void initView() { textView=(TextView)findViewById(R.id.textView); final Intent intent=new Intent(this,MyService.class);//开启服务必备 Intent btn=(Button)findViewById(R.id.button1); btn1=(Button)findViewById(R.id.button2); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startService(intent);//why is final 因为这是内部类啊 new了一个 } }); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { stopService(intent);//why is final } }); } public static void Reshnumber(double n) { num=n; handler.post(resh);//要显示刷新gui } private static Runnable resh=new Runnable() { @Override public void run() {//why define textview textView.setText(String.valueOf(num)); } }; }
package com.example.lenovo.testtwo; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.support.annotation.Nullable; public class MyService extends Service { private Thread thread; public MyService() { } @Override public void onCreate() { super.onCreate(); thread=new Thread(null,runnable,"hello"); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); if(!thread.isAlive()) { thread.start(); } } @Override public void onDestroy() { super.onDestroy(); thread.interrupt(); } Runnable runnable=new Runnable() { @Override public void run() {//这不是子线程么 try {//记得写 while (!Thread.interrupted()) { double a=Math.random(); otherActivity.Reshnumber(a); thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); } } }; public IBinder onBind(Intent intent) { return null; } }