导航:首页 > 操作系统 > 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开发相关的资料

热点内容
代码编译后黑屏 浏览:6
程序员情侣写真 浏览:503
python3孪生素数 浏览:34
计算杨辉三角Python 浏览:402
linux目录重命名 浏览:194
算法设计的最终形态是代码 浏览:260
程序员社团招新横幅 浏览:236
拖鞋解压视频大全 浏览:885
租服务器主机链接软件叫什么 浏览:854
交叉编译工具的linux版本号 浏览:154
python开发应用软件 浏览:30
hdl综合器与c编译器的区别 浏览:897
编译原理最左推导代码 浏览:700
加密三 浏览:128
通过编译链接后形成的可执行程序 浏览:680
怎么用matlab编程 浏览:781
解压助眠小动物吃东西 浏览:341
外圆倒角60度编程视频 浏览:491
vcc编译没问题运行跳不见 浏览:750
ada编译成dll 浏览:473