我是Android新手.我想知道Looper课程的作用以及如何使用它.我已阅读Android Looper类文档,但我无法完全理解它.我在很多地方都看过它但却无法理解它的目的.任何人都可以通过定义目的来帮助我,Looper并且如果可能的话也给出一个简单的例子吗?
我创建了一个应用程序,我在我的主类(Main Activity)中注册了一个广播接收器,每当我收到BroadcastReceiver我想要更新的UI时,我想要显示一个警告框或设置我的一些文本视图MainActivity.我收到接收器中的所有值但无法设置它们,有人可以帮助我,以便我可以更新我的UI BroadcastReceiver.
我的BroadcastReceiver类是MainActivity的内部类,如下所示: -
public class MainActivity extends Activity {
..........
public static class NissanTabBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences shrd = context.getSharedPreferences("NissanGallery", context.MODE_WORLD_READABLE);
type = shrd.getString("type", "null");
badges = shrd.getString("badge_count", "null");
//badge_tips_text.setText(badges);
/*Editor edit = shrd.edit();
edit.remove("type");*/
Toast.makeText(context, "" + type + "\n" + badge_tips_text.getText().toString(), Toast.LENGTH_LONG).show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很明显
谢谢
我在偏好活动中注册广播接收器,并从(唤醒)IntentService发送(同步)广播.显然onReceive在服务的线程上运行.这是我的错吗?是否记录了行为?
偏好活动:
public final class SettingsActivity extends BaseSettings {
private static CharSequence sMasterKey;
private CheckBoxPreference mMasterPref;
// Receiver
/** If the master preference is changed externally this reacts */
private BroadcastReceiver mExternalChangeReceiver =
new ExternalChangeReceiver();
public static void notifyMonitoringStateChange(Context ctx,
CharSequence action, boolean isToggling) {
final LocalBroadcastManager lbm = LocalBroadcastManager
.getInstance(ctx);
Intent intent = new Intent(ctx, ExternalChangeReceiver.class);
intent.setAction(action.toString());
intent.putExtra(TOGGLING_MONITORING_IN_PROGRESS, isToggling);
lbm.sendBroadcastSync(intent);
}
@Override
protected void onStart() {
super.onStart();
final LocalBroadcastManager lbm = LocalBroadcastManager
.getInstance(this);
lbm.registerReceiver(mExternalChangeReceiver, new IntentFilter(
ac_toggling.toString()));
}
@Override …Run Code Online (Sandbox Code Playgroud) multithreading android broadcastreceiver localbroadcastmanager
我想在我的android应用程序运行时在后台连续检查互联网连接.我的意思是从应用程序的启动到应用程序的结束.我该怎么做?该方法应该是什么?
我开始使用Google的C2DM了.此过程的一部分涉及在注册发生时接收广播意图.在Google的官方C2DM文档中,示例代码在BrodcastReceiver的onReceive()方法中显示以下注释:
// Send the registration ID to the 3rd party site that is sending the messages.
// This should be done in a separate thread.
Run Code Online (Sandbox Code Playgroud)
但是,我读过的所有内容,包括BroadcastReceiver的文档,都表明从onReceive()启动一个线程几乎肯定会引起问题,因为一旦onReceive()返回,该过程很快就会被杀死.
有人可能犯了一个错误,我应该忽略关于使用单独线程的评论,但我猜他们说这是有原因的,即使它有误导性.
有没有理由在返回之前不能或不应该使用与onReceive()相同的线程中的网络?如果这样做有问题,那么即使在C2DM之外,处理必须是常见情况的正确方法是什么?开始服务?
multithreading android broadcastreceiver android-networking android-c2dm