【发布时间】:2016-08-21 04:53:59
【问题描述】:
我想知道有没有办法在 android 的系统应用程序进程中执行代码。 我通过未决意图发现我们可以将我们的工作分配给在警报管理器或通知等外部应用程序中执行,但我仍然发现工作在同一个应用程序进程中执行。为了清楚地理解
这里我在 buttonclick 事件上创建警报管理器。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("processstatus", "pid="+android.os.Process.myPid());
//creating an alarm manager
alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, customreciever.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime() +10*1000, pendingIntent );
}
});
通过下面的代码,我收到了通过警报管理器每隔 10 秒触发一次的广播事件。
public class customreciever extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
// Same app process id expecting alaramanager process id
Log.d("processstatus", "pid="+android.os.Process.myPid());
}
}
在 onReceive 方法中,我期望与应用程序进程不同的进程 ID。如果通过待定意图无法实现,请建议我使用其他任何方法来实现这一点。
【问题讨论】:
标签: android process java-native-interface android-pendingintent pid