即使用户从正在运行的进程菜单中关闭应用程序(通过将进程移出屏幕),我也正在尝试创建一个可以为我做后台作业的服务。
我尝试做的是通过声明这样的方式在不同的过程中创建服务:
<service
android:name=".service.Service"
android:enabled="true"
android:icon="@drawable/ic_launcher"
android:process=":my_process" >
</service>
和onStartCommand()是:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
答案 0 :(得分:6)
根据Android documentation,您可以使用以下属性实现此行为:
app.controller('myctrl', function($scope) {
$scope.colors = [
'#36342a',
'#4f48d5',
'#03bbbb',
'#3eb308',
'#f0d817',
'#dd3333'
];
$scope.selectedRow = 0; // initialize our variable to null
$scope.setClickedRow = function(index) { //function that sets the value of selectedRow to current index
$scope.selectedRow = index;
}
});
顺便说一句,我知道它没有回答这个问题,但它也可能对某些人有所帮助 - 最近,我发现了Evernote开发人员创建的一个很棒的第三方库。它的名称是Android-Job,其目的是创建在不同进程上运行的作业,即使在设备重启后也可以再次激活,这太棒了。
答案 1 :(得分:1)
实际上,您可以实施不同类型的服务。使用服务代替IntentService
。在那里,您需要查看START_STICKY
,START_NOT_STICKY
和START_REDELIVER_INTENT
,即使您的活动已经停止,您也可以在后台运行您的服务。 Android services也会查看AIDL
服务
答案 2 :(得分:0)
为此,您可以使用Handler和Runnable类
@Override
public void onCreate()
{
Toast.makeText(context, "SMS SERVICE START", Toast.LENGTH_SHORT).show();
handler=new Handler();
runnable=new Runnable() {
@Override
public void run()
{
TASK();
handler.postDelayed(runnable,180000);
// 3min delay
}
};
handler.postDelayed(runnable,180000);
super.onCreate();
}
此任务连续运行3分钟
public void TASK()
{
//your task
}
答案 3 :(得分:-8)
服务旨在在后台运行,无需其他流程。
来自服务文档:
一旦启动,即使启动它的组件被破坏,服务也可以无限期地在后台运行。
但是,当它的工作完成时,服务应该停止。 IntentService是开始实施服务的最简单方法。