我正在开发一款将在后台线程(服务应用)上运行的Android应用。我想通过另一个应用程序的Intent(ACTION_SEND)从另一个应用程序接收一些数据。
当应用程序处于后台线程时,应用程序是否可以接收意图。
答案 0 :(得分:1)
我正在开发一款将在后台线程(服务应用)上运行的Android应用。
应用程序无法在后台线程上运行。应用可能拥有后台主题。
我想通过另一个应用程序的Intent(ACTION_SEND)从另一个应用程序接收一些数据。
ACTION_SEND
只会路由到您的活动。欢迎您的活动在此时执行涉及后台线程的操作。如果您使用Theme.Translucent.NoTitleBar
作为活动主题并在finish()
内调用onCreate()
,则可以让活动没有用户界面。因此,从用户的角度来看,似乎ACTION_SEND
正在后台处理,即使实际上并非如此。
答案 1 :(得分:1)
您可以在接收“ACTION_SEND intent”时实现一个没有自己的gui的Activity。然后,该活动可以通知您正在运行的后台服务:
清单
<manifest ...>
<application ...>
<activity android:name=".MyActionSendReceiver">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- file must have mimeType to match -->
<data android:mimeType="*/*" />
<data android:scheme="file" />
</intent-filter>
</activity>
</application>
</manifest>
public class MyActionSendReceiver extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean canWrite = SettingsImpl.init(this);
Intent mySendIntent = getIntent();
// TODO inform my running background service
// no gui has been created. finish this activity
this.finish();
}
}