android Service传值
来源:互联网 发布:机房网络静电地板 编辑:程序博客网 时间:2024/05/23 12:17
public class MainActivity extends AppCompatActivity implements ServiceConnection { private static final int RECALL_NAME = 0; private TextView textView; private EditText editText; private MyService.MyBinder binder; private android.os.Handler handler = new android.os.Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.arg1 == RECALL_NAME) { textView.setText(msg.getData().getString("name")); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); editText = (EditText) findViewById(R.id.editText); Intent intent = new Intent(this, MyService.class); bindService(intent, this, Context.BIND_AUTO_CREATE); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (binder != null) { binder.setName(editText.getText().toString()); } } }); findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { unbindService(); } }); } private void unbindService() { if (binder != null) { unbindService(this); binder = null; } } @Override public void onServiceConnected(ComponentName name, IBinder service) { binder = (MyService.MyBinder) service; binder.getService().setOnMyServiceListener(new MyService.OnMyServiceListener() { @Override public void onNameChange(String name) { Message message = new Message(); Bundle bundle = new Bundle(); bundle.putString("name", name); message.setData(bundle); message.arg1 = RECALL_NAME; handler.sendMessage(message); } }); } @Override public void onServiceDisconnected(ComponentName name) { unbindService(); } @Override protected void onDestroy() { super.onDestroy(); unbindService(); }}
public class MyService extends Service { private String name = "zzz"; private boolean running = false; public MyService() { } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. return new MyBinder(); } public class MyBinder extends Binder implements IBinder { public void setName(String name) { MyService.this.name = name; } public MyService getService() { return MyService.this; } } @Override public void onCreate() { super.onCreate(); new Thread() { @Override public void run() { super.run(); running = true; int i = 0; while (running) { if (onMyServiceListener != null) { onMyServiceListener.onNameChange(name + (i++)); } try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); } @Override public void onDestroy() { super.onDestroy(); running = false; } private OnMyServiceListener onMyServiceListener = null; public void setOnMyServiceListener(OnMyServiceListener onMyServiceListener) { this.onMyServiceListener = onMyServiceListener; } public OnMyServiceListener getOnMyServiceListener() { return onMyServiceListener; } public static interface OnMyServiceListener { void onNameChange(String name); }}
0 0
- android Service传值
- [android]service中再启service
- android service
- Android Service
- android service
- Android Service
- Android service
- android service
- Android Service
- Android Service
- Android service
- Android:Service
- Android Service
- [Android] Service
- android service
- android service
- android service
- android service
- 深入理解Objective-C:Category(上)
- 202. Happy Number
- 根据MRP建议对采购订单需求日期的建议修改采购订单需求日期 (续)
- ANDROID L——Material Design详解(主题和布局)
- MAC下安装与配置MySQL
- android Service传值
- loadView、viewDidLoad及viewDidUnload的关系
- 线程的实现(通过实现Runnable接口启动线程)
- 如何保证返回按钮点击后始终有反映
- codeforces#308-E - Vanya and Brackets-枚举+表达式计算
- oracle_常用的sql函数
- 支付宝 iOS SDK 的简单使用
- selenium+java环境搭建
- 如何创建一个UICollectionView之使用详解