- 浏览: 1065578 次
- 性别:
- 来自: 南昌
文章分类
- 全部博客 (276)
- 生活 (1)
- 代码之美 (22)
- Media (7)
- Android Widget (3)
- Android Intent (1)
- Android Activity (4)
- UI event handle--UI事件处理机制 (2)
- Java基础知识 (12)
- android Databases (5)
- Android 系统知识 (70)
- 平常遇到的问题与解决方法 (38)
- Android TextView/EditView (2)
- Thinking Java (1)
- android webkit (6)
- JSON (1)
- XML (4)
- HTTP (1)
- Google Weather API (1)
- android 2.3 NFC (10)
- android app (20)
- android framework (7)
- C++ (2)
- android System (5)
- Pthread (1)
- Wifi (8)
- Unix/Linux C (8)
- Android 4.0 (1)
- Mail (1)
- Smack 源码学习 (4)
- iOS (4)
- Android (1)
- git (1)
- Gallery3d (2)
- React-Natice (1)
最新评论
-
dd18349182956:
你是用的smack哪个版本?我用的smack4.1.3和sma ...
关于socket长连接的心跳包 -
xukaiyin:
全英文
getApplicationContext()与this,getBaseContext() -
裂风矢:
...
<category android:name="android.intent.category.DEFAULT" /> 惹的祸 -
xanthodont:
mark一下
XMPP——Smack -
Evilover3:
mark一下,学习了
XMPP——Smack
我想我们一般在Service里想启动Activity一定会这样写:
这样写就会报错的:
03-11 02:37:09.737: ERROR/AndroidRuntime(7881): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
提示要加上FLAG_ACTIVITY_NEW_TASK,所以加上 intentv.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);这一行就可以了。
但若看的源码够的话,还会发现有另外一种方法在Service里面启动Activity的另外一种方法:通过PendingIntent,下面就以Tag中TagView(Activity)和TagService为例子:
TagView里启动TagService并且把待会在TagService里面启动的Activity用Pending将其封装好并且传给TagService:
通过pending.send(this, 0, result);启动了对应的Activity.
这里也是PendingIntent的用法之一。
我不太明白这两种启动Activity的方法有什么不同之处虽然效果都是一样的,对开销会怎样,希望知道的朋友能和我分享。呵呵..
Intent intentv = new Intent(Intent.ACTION_VIEW); intentv.setData(uri); intentv.putExtra("keepTitle", true); startActivity(intentv);
这样写就会报错的:
03-11 02:37:09.737: ERROR/AndroidRuntime(7881): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
提示要加上FLAG_ACTIVITY_NEW_TASK,所以加上 intentv.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);这一行就可以了。
但若看的源码够的话,还会发现有另外一种方法在Service里面启动Activity的另外一种方法:通过PendingIntent,下面就以Tag中TagView(Activity)和TagService为例子:
TagView里启动TagService并且把待会在TagService里面启动的Activity用Pending将其封装好并且传给TagService:
TagService.saveMessages(this, msgs, false, getPendingIntent());private PendingIntent getPendingIntent() { Intent callback = new Intent(); callback.setClass(this, TagViewer.class); callback.setAction(Intent.ACTION_VIEW); callback.setFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP); callback.putExtra(EXTRA_KEEP_TITLE, true); return PendingIntent.getActivity(this, 0, callback, PendingIntent.FLAG_CANCEL_CURRENT); }
public static void saveMessages(Context context, NdefMessage[] msgs, boolean starred, PendingIntent pending) { Intent intent = new Intent(context, TagService.class); intent.putExtra(TagService.EXTRA_SAVE_MSGS, msgs); intent.putExtra(TagService.EXTRA_STARRED, starred); intent.putExtra(TagService.EXTRA_PENDING_INTENT, pending); context.startService(intent); }
@Override public void onHandleIntent(Intent intent) { if (intent.hasExtra(EXTRA_SAVE_MSGS)) { Parcelable[] msgs = intent.getParcelableArrayExtra(EXTRA_SAVE_MSGS); NdefMessage msg = (NdefMessage) msgs[0]; ContentValues values = NdefMessages.toValues(this, msg, false, System.currentTimeMillis()); Uri uri = getContentResolver().insert(NdefMessages.CONTENT_URI, values); if (intent.hasExtra(EXTRA_PENDING_INTENT)) { Intent result = new Intent(); result.setData(uri); PendingIntent pending = (PendingIntent) intent.getParcelableExtra(EXTRA_PENDING_INTENT); try { pending.send(this, 0, result); } catch (CanceledException e) { if (DEBUG) Log.d(TAG, "Pending intent was canceled."); } } return; } ..... }
通过pending.send(this, 0, result);启动了对应的Activity.
这里也是PendingIntent的用法之一。
我不太明白这两种启动Activity的方法有什么不同之处虽然效果都是一样的,对开销会怎样,希望知道的朋友能和我分享。呵呵..
发表评论
-
ACTIVITY的LAUNCH MODE详解 SINGLETASK正解
2012-05-30 08:58 1098转自:http://www.cnblogs.com/xiaoQ ... -
android的一些开源项目
2011-12-06 14:08 1179转自:http://www.iteye.com/problem ... -
修改StatusBar
2011-10-10 10:27 1245转自:http://iserveandroid.blogspo ... -
单独一个应用程序换语言
2011-09-29 15:16 1436转自http://blog.csdn.net/sodino/a ... -
通过代码设置live wall paper
2011-09-02 09:17 25071. The code is: private Wall ... -
Android camera 默认显示黑白的问题
2011-06-08 16:18 2525转自:http://tassardge.blog. ... -
关于Activity切换动画——overridePendingTransition
2011-05-25 14:33 5756Activity的切换动画指的是从一个activity跳转到另 ... -
sendBroadcast和sendStickyBroadcast的区别
2011-04-28 13:39 9699我们平时最经常使用的是sendBroadcast,就是把一个I ... -
Settings.System.getInt获取Setting里面的一些设置
2011-04-28 10:29 7020好久没有更新博客了,其实这期间我都在研究android如何换皮 ... -
Android Windows
2011-03-11 09:45 2041转自:http://elsila.blog.163.com/b ... -
IntentService
2011-03-11 09:23 3435看android的源码可以发现很多很多有趣有用的代码,今天在看 ... -
AsyncQueryHandler
2011-03-02 15:10 6788在QuickContactBadge里面我 ... -
QuickContactBadge如何实现
2011-03-02 11:52 4909从前一篇,我们知道了如何使用了QuikcContactBadg ... -
如何使用QuickContactBadge
2011-03-02 09:34 4051参考文章:http://mobile.tutsplus.com ... -
QuickSearcheBox---SearchManager获取search列表
2011-02-25 14:05 1849在android 2.2之后加入了SearchManager, ... -
QuickSearcheBox---SearchWidgetConfigActivity
2011-02-24 10:48 1630再把QuickSearchBox放到桌面前,会先触发它的Con ... -
RemoteView总结
2011-02-23 11:15 2325我最初认识RemoteView是在AppWidget里面的,但 ... -
Google Search Widget, Google Search ap, Globe Search ap
2011-02-23 10:39 1281http://blog.csdn.net/Judy889/ar ... -
调用android system Search UI须注意的问题
2011-02-23 10:38 1535http://blog.csdn.net/Judy889/ar ...
相关推荐
通常,Service启动Activity是通过发送意图(Intent)来实现的。 **一、Service启动Activity的基本流程** 1. **创建Intent**: 首先,你需要在Service中创建一个Intent对象,指定要启动的Activity类名。例如: ```...
4. 从Service启动Activity: 通常,我们不建议直接在Service中启动Activity,因为这可能引发用户界面问题。然而,如果确实需要,可以通过发送意图(Intent)来启动Activity。在Service中: ```java Intent intent...
Service的启动,Activity与Service之间数据传递,Binder利用bindService实现Service传递数据给Activity,Activity的成员Broadcast实现Service传递数据给Activity
当我们启动或绑定Service时,可以使用Intent对象将数据传递给Service。同样,Service也可以通过Intent返回结果到Activity。首先,在Service中创建一个BroadcastReceiver,用于接收发送的数据,并在适当的时候(例如...
在`Activity`中启动`Service`,通常使用`startService()`方法,需要传入一个`Intent`对象,`Intent`中可以携带数据。例如: ```java Intent intent = new Intent(this, MyService.class); // 如果需要传递数据,...
本示例"Android Service与Activity交互"旨在演示如何在Service启动后,通过线程进行异步操作,并在完成特定任务后,通过发送广播(Broadcast)通知Activity来更新用户界面。 首先,我们需要创建一个Service,通常在...
在Android开发中,Activity和Service是两个非常重要的组件,它们各自承担着不同的职责,但都是应用程序运行不...开发者需要熟练掌握如何启动、管理Activity以及如何启动和绑定Service,以实现应用程序的各种功能需求。
- 使用`startService()`或`bindService()`启动`Service`,根据需求选择。如果需要`Activity`与`Service`持续交互,推荐使用`bindService()`。 - 实现`ServiceConnection`接口,重写`onServiceConnected()`和`...
startService()用于启动并执行一次性任务,而bindService()则用于建立Activity与Service的连接,实现双向通信。 二、Service与Activity通信方式 1. startService(): 当Activity启动Service时,可以通过Intent传递...
在给定的场景中,我们将讨论如何利用观察者模式来实现一个Service通知多个Activity更新UI的功能。 首先,我们需要理解Service和Activity之间的交互方式。在Android中,Service是后台运行的组件,而Activity是用户...
android开机启动Activity/Service/App的三合一demo,本人写了一个小小demo,把如果开机自启动Activity、Service、APP写了下,欢迎下载。
startService()启动Service并执行onStartCommand()方法,服务会持续运行直到stopService()或stopSelf()被调用。bindService()则用于建立Activity和服务之间的连接,当所有客户端(Activity)解绑后,Service会被销毁...
本教程将重点讲解如何在Kotlin环境中实现Activity与Service的绑定、启动、解绑以及关闭过程。 1. **Service的基础概念** Service是Android系统中的一个关键组件,它在后台运行,不提供用户界面。Service可以用来...
在创建Service时,我们通常会重写`onStartCommand()`或`onBind()`方法来处理服务启动或绑定时的逻辑。 当Service需要向Activity发送消息时,有多种方法可以实现: 1. **使用Intent**: 可以通过发送Broadcast ...
在Android应用开发中,Service和Activity是两个非常重要的组件,它们各自承担着不同的职责。Service主要负责在后台长时间运行的任务,而Activity则专注于用户界面的交互。本篇将深入探讨Service与Activity之间的绑定...
在Android应用开发中,Activity和Service是两个关键组件。Activity代表用户界面,而Service则用于在后台执行长时间运行的任务,不直接与用户交互。在实际项目中,常常需要多个Activity与一个Service进行通信,比如本...
1. **启动Service:** Activity可以通过startService()方法启动一个Service,Service会在后台持续运行,直到stopSelf()或stopService()被调用。 2. **绑定Service:** 使用bindService()方法,Activity可以与Service...
2. bindService(): 这种方式启动的Service会执行onBind()方法,主要用于客户端(如Activity)和服务端(Service)之间的绑定交互。当所有客户端都解绑后,系统会自动停止Service。 三、Service生命周期 1. onCreate...
启动Service时,可以在Intent中添加额外的数据,Service通过onStartCommand()方法获取这些数据。同样,Service可以通过startActivityForResult()或startActivity()向Activity发送Intent,传递结果数据。 2. **...
本主题将深入探讨如何使用Service以及BroadcastReceiver来实现特定的功能:当Service检测到某个函数的状态变化时,通过Broadcast发送通知,进而启动一个新的Activity。 首先,让我们了解`Service`。在Android中,...