【发布时间】:2012-08-06 23:14:30
【问题描述】:
当应用当前未在屏幕上打开时,我在将字符串从主要活动传递到广播接收器时遇到问题。
创建 MainActivity 类时,intent 过滤器会通过广播接收器返回正确的信息,但是一旦用户在手机上转到主屏幕,当接收器在屏幕外触发时,广播接收器就会开始为 toast 返回“null” .
1.新意图
Intent home_page = new Intent(newIntent.this,MainActivity.class);
ownAddress = ""+customInput.getText().toString();
home_page.putExtra("session_number", ""+ownAddress);
startActivity(home_page);
2. MainActivity.java:
public class MainActivity extends DroidGap {
SmsReceiver mAppReceiver = new SmsReceiver();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
final String ownAddress = bundle.getString("session_number");
registerReceiver(mAppReceiver, new IntentFilter("SmsReceiver"));
Intent intent = new Intent("SmsReceiver");
intent.putExtra("passAddress", ownAddress);
sendBroadcast(intent);
}
}
3. SmsReceiver.java:
public class SmsReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast showme = Toast.makeText(context,"Number: "+intent.getExtras().get("passAddress"),Toast.LENGTH_LONG);
showme.show();
}
}
当应用程序仅在后台运行或无论何时创建 MainActivity 类时,是否有将字符串传递给广播接收器?
【问题讨论】:
-
Activity实际上是一个 UI 框架。如果它不可见,那么一般来说,它没有运行。解释更多关于你想要做什么,不清楚。 -
每次触发它时,我都需要将一个字符串从活动传递到广播接收器,因为我正在构建的应用程序将根据字符串的内容执行 HttpPost。
-
我还是不明白——
Activity不应该被“事件”“触发”,这就是BroadcastReceivers的全部意义所在。什么是“触发”Activity- 在我看来,您需要绕过“中间人”(Activity),因为您不能保证它会一直运行,因为您的问题显然就是全部关于。Activity是一个 UI 框架 - 它不是通用类。
标签: android string broadcastreceiver