导航:首页 > 操作系统 > androidservice开发

androidservice开发

发布时间:2024-11-08 10:09:10

android开发 service 和activity 广播问题

这里我们先假定service发出内容时候的Action为ActionS。


如果activity里没有动态注册监听service发出的ActionS的广播, 即使Activity当前在使用中也不会得到通知, 更不用说未启动的Activity来捕获这个通知了。


要捕获这个字符串有两种方式, 分别如下

  1. 在AndroidManifest.xml中注册
    <receiver android:name="YourBroadcastReceiver" >
    <intent-filter>
    <action android:name="ActionS" />
    </intent-filter>
    </receiver>
    这样, 一旦有定义的ActionS发出来,YourBroadcastReceiver的onReceive方法就会回调了,这样的监听,不需要你的app已经在运行。你在onReceive方法里拦截处理。


2.在Activity中动态创建监听器, onCreate()中生成一个IntentFilter对象

IntentFilter filter=new IntentFilter();
//为IntentFilter添加一个ActionS

filter.addAction(ActionS);
yourBroadcastReceiver = newYourBroadcastReceiver();

registerReceiver(yourBroadcastReceiver, filter);


在onDestroy的时候去注册
unregisterReceiver(yourBroadcastReceiver);
这样的方式只有在Activity生命周期onCreate()-onDestroy()之间有效, 在YourBroadcastReceiver.onReceive()方法里拦截处理。

⑵ Android开发怎么调试Service

Android开发如何调试Service

Android 开发中,添加代码对Service 进行调试 。

介绍
以调试 模式启动Android 项目时,在service 中设置断点,调试 器不会停止下来
解决方法
所有的这种情况下,都是在代码中声明。调用的方法是:

android.os.Debug.waitForDebugger();

举个例子,SoftKeyboard:

public class SoftKeyboard extends InputMethodService implements KeyboardView.OnKeyboardActionListener { @Override public void onConfigurationChanged(Configuration newConfig) { Log.d("SoftKeyboard", "onConfigurationChanged()"); /* now let's wait until the debugger attaches */ android.os.Debug.waitForDebugger(); super.onConfigurationChanged(newConfig); /* do something useful... */ }

代码中你可以看到,首先是调用了日志记录器logger,代码运行到这里时,会将在logcat中添加一条记录,这是跟踪代码运行的一种方法,如果不需要在断点上停止时可以使用。但通常为了更详细的调试 ,这是不足够的。
第二条语句等待添加调试 器,添加了这条语句之后,可以在这个方法的任何地方添加断点。
Activity也是应用的部分时调试 Service 就更加容易了。那种情况下,首先需要启动Activity,调试 器也可以在Service 的断点中停止下来,不需要调用 waitForDebugger()。

⑶ 怎么开发android service 开机启动

第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class BootBroadcastReceiver extends BroadcastReceiver {
//重写onReceive方法
@Override
public void onReceive(Context context, Intent intent) {
//后边的XXX.class就是要启动的服务
Intent service = new Intent(context,XXXclass);
context.startService(service);
Log.v("TAG", "开机自动服务自动启动.....");
//启动应用,参数为需要自动启动的应用的包名
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
context.startActivity(intent );
}

}
第二步:配置xml文件,在receiver接收这种添加intent-filter配置
<receiver android:name="BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
第三步:添加权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

阅读全文

与androidservice开发相关的资料

热点内容
鸿蒙系统哪里下载app 浏览:542
ourplay解压闪退 浏览:89
如何控制自己早睡app 浏览:386
苏州找程序员做软件 浏览:393
linux查看oraclesid 浏览:417
intelandroid模拟 浏览:307
android扫描所有图片 浏览:433
京东app里面哪里有京东快递 浏览:943
英文pdf下载 浏览:724
有地下室的一层框架柱加密区 浏览:114
linux编程开发环境 浏览:294
S32DS如何编译下载 浏览:507
云服务器储存视频 浏览:831
android重要知识点 浏览:548
智能数字加密卡槽 浏览:20
压缩性骨折45 浏览:920
如何空中网手机服务器 浏览:811
企业加密电脑如何拷贝数据 浏览:406
4月18日加密货币全线杀跌 浏览:805
健康中山app在哪里下载 浏览:64