没有得到以下程序的流程

时间:2014-01-03 16:35:41

标签: android

public class MainActivity extends Activity {

public TextView batteryTxt;
private BroadcastReceiver receiver;

BroadcastReceiver mybroadcast = new BroadcastReceiver() {


    @Override
    public void onReceive(Context context, Intent intent) {

        int batterylevel = intent.getIntExtra("level", 0);

        batteryTxt.setText("Battery Level: " + Integer.toString(batterylevel) + "%");
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    batteryTxt = (TextView) findViewById(R.id.textView1);

    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(mybroadcast, filter);
}

}

虽然我没有在上面的程序中使用 intent.putExtra() intent.getIntExtra(“level”,0)如何工作?

3 个答案:

答案 0 :(得分:1)

这是IntentFilter,会向Intent发送BatteryManager以检查ACTION_BATTERY_CHANGEDBatteryManager然后调用intent.putIntExtraint放在Intent中。

答案 1 :(得分:0)

当执行操作“ACTION_BATTERY_CHANGED”时,意图是您的BroadcastReceiver从系统接收的内容。在这种情况下,它是关于电池电量的信息,“0”是默认值(如果没有额外命名的“级别”)。意图不是由此应用中的任何活动创建的。

答案 2 :(得分:0)

您需要阅读有关BroadcastReceivers和Intents的文档。

http://developer.android.com/reference/android/content/BroadcastReceiver.html

http://developer.android.com/reference/android/content/Intent.html

基本上,这两种机制是Android在应用程序和进程之间传输状态的首选方法。

简而言之:

广播接收器是为Intents注册的,每当意图被“触发”或“发射”时,对应于您的意图注册的“Mime-Type”,该广播接收器将被激活。此时,您的广播接收器将有机会通过发送的意图处理传递给它的状态。

在你的情况下:

您已创建一个广播接收器,该电视接收器已注册(可能)用于电池服务意图。这意味着每次电池服务向所有相关方发送意图时,您都会收到一条消息。电池服务包括其意图某些数据,这些数据对于对电池状态感兴趣的应用,服务或过程是有用的。在这种情况下,它是“水平”。