Android的Service如何获取Activity传入的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android的Service如何获取Activity传入的值相关的知识,希望对你有一定的参考价值。

我在Activity界面使用Intent.putextra将值传递到Service中,2.1版本之前的service生命周期是有调用onstart()方法的,但是2.2版本以后,都是调用onstartcommand方法,在这个方法里面直接获取参数中的Intent,并调用getStringExtra方法获取传入的参数,可以为何每次获取的都是空值,烦请各位给与解答,谢谢

参考技术A 你写putExtra方法时,是否就传入的null,因为在用getStringExtra方法时候,获取不到值,才会返回一个空值.打个log看下,是否将你想要的参数传进去了 参考技术B 你是用bindService 绑定服务的吧,实在不行 就把数据写进preference中,在service中读,或者通过数据库和广播, 办法总归有的,好坏优雅之分罢了,希望可以帮到你! 参考技术C

  通过service中的onBind方法,这个方法的参数是Intent,通过Intent就能获得传入的值。范例代码如下:

public IBinder onBind(Intent intent) 
// TODO Auto-generated method stub
   Log.e("onBind", "onBind");
   //看这 String url=intent.getStringExtra("url");
   return new MyBinder();

参考技术D bundle

Android基础篇 Android获取屏幕宽高的方法

一、通过获取系统服务的方式

WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();

二、通过Activity/Fragment来获取

(1)Activity

WindowManager wmAct = this.getWindowManager();
//WindowManager wmAct = getWindowManager();
int width1 = wmAct.getDefaultDisplay().getWidth();
int height1 = wmAct.getDefaultDisplay().getHeight();

(2) Fragment / Dialog

WindowManager wm1 = getActivity.getWindowManager();
int width1 = wm1.getDefaultDisplay().getWidth();
int height1 = wm1.getDefaultDisplay().getHeight();

三、借助DisplayMetrics来获取画面宽高

WindowManager manager = this.getWindowManager();
DisplayMetrics outMetrics = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(outMetrics);
int width = outMetrics.widthPixels;
int height = outMetrics.heightPixels;

四、通过资源来借助DisplayMetrics来获取画面宽高

Resources resources = this.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
float density = dm.density;
int width = dm.widthPixels;
int height = dm.heightPixels;

以上是关于Android的Service如何获取Activity传入的值的主要内容,如果未能解决你的问题,请参考以下文章

Android中Service的交互方法讲解

Android 怎么退出整个应用程式

Android的Service如何获取Activity传入的值

Android service如何获取Activity传入的值

如何在 Android 的 Receiver/Service 中获取 CheckBoxPreference 值?

Ambiguous method call. Both findViewById (int) in AppCompatActivity and findViewById (int) in Activi